Seite 1 von 1

QRadioButton in QgroupBox: Welcher ist on?

Verfasst: 30. April 2018 20:08
von Chri
Hi

Habe eine QgroupBox mit vielen QRadioButtons.
Erzeugt mit dem Designer.
Bisher habe ich es so gemacht:

Code: Alles auswählen

int WPArt = 0;
foreach (QRadioButton *button,ui->groupBox_WPArt->findChildren<QRadioButton*>())//            {
    {
        if (button->isChecked()) WPArt ++; 
        break;
    }
}
und habe WPArt per switch weiterverwertet.

Doch nun kam mir der Verdacht: Kommen sie wirklich in der Reihenfolge, wie ich sie auf dem Bildschirm sehe - hat es bisher zufällig funktioniert ?
Im Designer hab ich nichts gefunden, um den Buttons eine eindeutige ID zuordnen zu können, nach der ich dann fragen könnte. ?

Und die QgroupBox abzufragen, welcher on ist, geht angeblich nicht, wenn alles mit dem Designer gemacht wurde. ?

Also fällt mir nur die Variante ein, an die Namen der QRadioButtons ein "_Nummer" anzuhängen und daraus WPArt zu erzeugen.

Oder geht es vielleicht nicht doch einfacher?

LG
Chri

Re: QRadioButton in QgroupBox: Welcher ist on?

Verfasst: 1. Mai 2018 15:42
von hilefoks
Moin,

dein Code deutet an, das mehrere QRadioButton aktiv sein können. Das verwirrt mich etwas. ;-)
Erklär mal etwas genauer was du eigentlich erreichen möchtest.

MfG
Hilefoks

Re: QRadioButton in QgroupBox: Welcher ist on?

Verfasst: 1. Mai 2018 17:01
von Chri
Es ist immer nur ein Radiobutton on, die anderen off.
Alle Radiobuttons rufen die gleiche Funktion WP() auf, wenn sie angeklickt werden.

In dieser Funktion gibt es eine Passage, in der je nach aktivem Radiobutton mittels switch unterschiedliche Codes ausgeführt werden:
Wenn der erste aktiv ist, dann case 1: usw.

Der Grund:
Es sind viele Radiobuttons, es können später noch mehr Radiobuttons dazu kommen, in jeder Slot-Funktion braucht aber immer nur das gleiche stehen (..... WP() .....)
Und ich möchte die unterschiedlichen Fälle nicht auf die Slot-Funktionen aufgeteilt haben, sondern im Switch schön zusammen haben.

LG
Chri

Re: QRadioButton in QgroupBox: Welcher ist on?

Verfasst: 2. Mai 2018 10:44
von Chri
Ah sorry, falscher Code, irgendwie habe ich break und WPArt vertauscht.
Richtig:

Code: Alles auswählen

foreach (QRadioButton *button,ui->groupBox_WPArt->findChildren<QRadioButton*>())//            {
    {
        if (button->isChecked()) break;
        WPArt ++;
    }
Das liefert ansich, welcher QRadioButton on ist. Doch ....


LG
Chri

Re: QRadioButton in QgroupBox: Welcher ist on?

Verfasst: 5. Mai 2018 09:13
von Volker75
Ich arbeite leider nie mit dem Designer.

Aber wenn ich dich richtig verstehe:
"Alle Radiobuttons rufen die gleiche Funktion WP() auf, wenn sie angeklickt werden."

Warum rufst du die Funktion nicht einfach mit einem Parameter auf? Dann kannst du doch einfach die Nummer selbst übergeben.
(Also radiobutton 1 ruft WP(1) auf; ...)

Re: QRadioButton in QgroupBox: Welcher ist on?

Verfasst: 7. Mai 2018 12:55
von Chri
Genau, alle rufen die gleiche Funktion WP() auf.
Klar ginge radiobutton 1 ruft WP(1) auf; ... (Die "Mühe", 1, 2, 3,... zu schreiben wollte ich mir sparen :) )

Mir geht es um das Umgekehrte:
An irgendeiner anderen Stelle möchte ich wissen, welcher RadioButton gerade on ist.
Und an einer anderen Stelle wieder.
In VisualBasic gibt es die Möglichkeit abzufragen, welcher in der Checkbox gerade on ist, das ist es, was ich eigentlich will.
Die QT-GroupBox weiß es ja auch: Sie sorgt dafür, dass nur einer On ist. Aber einfach danach fragen kann man nicht?


LG
Christoph

Re: QRadioButton in QgroupBox: Welcher ist on?

Verfasst: 7. Mai 2018 17:16
von hilefoks
Du könntest eine QButtonGroup verwenden.