QRadioButton in QgroupBox: Welcher ist on?

Alles rund um die Programmierung mit Qt
Antworten
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

QRadioButton in QgroupBox: Welcher ist on?

Beitrag 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
Die Sprache des Technikers ist die Skizze
hilefoks
Beiträge: 144
Registriert: 13. März 2008 16:09

Re: QRadioButton in QgroupBox: Welcher ist on?

Beitrag 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
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

Re: QRadioButton in QgroupBox: Welcher ist on?

Beitrag 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
Die Sprache des Technikers ist die Skizze
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

Re: QRadioButton in QgroupBox: Welcher ist on?

Beitrag 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
Die Sprache des Technikers ist die Skizze
Volker75
Beiträge: 59
Registriert: 8. April 2009 21:04

Re: QRadioButton in QgroupBox: Welcher ist on?

Beitrag 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; ...)
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

Re: QRadioButton in QgroupBox: Welcher ist on?

Beitrag 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
Die Sprache des Technikers ist die Skizze
hilefoks
Beiträge: 144
Registriert: 13. März 2008 16:09

Re: QRadioButton in QgroupBox: Welcher ist on?

Beitrag von hilefoks »

Du könntest eine QButtonGroup verwenden.
Antworten