Seite 1 von 1

checkable Buttons gegeneinander "verriegeln"

Verfasst: 13. November 2010 10:52
von tux.2000
Hallo Gemeinde.

Ich habe ein kleines Fenster erstellt auf dem 5 "checkable" QtPushButtons zu sehen sind.
Von diesen 5 Buttons darf aber immer nur einer aktiv bzw. gedrückt sein. Klickt man z.B. auf den 3. Button, sollen automatisch Button1, Button2, Button4 und Button 5 auf unchecked gehen...

Wie erreicht man soetwas am elegantesten?
Ich denke ich bräuchte ein allgemeines clicked()-Ereignis, das von allen Knöpfen ausgelöst werden kann. Nur wie bestimme ich dann, welcher der 5 Buttons der Auslöser war?

Ich bräuchte ein paar Tipps dahingehend...
(bin absoluter Qt Neuling)

Vielen Dank.

Verfasst: 13. November 2010 11:13
von solarix
Ich habe ein kleines Fenster erstellt auf dem 5 "checkable" QtPushButtons zu sehen sind.
Von diesen 5 Buttons darf aber immer nur einer aktiv bzw. gedrückt sein. Klickt man z.B. auf den 3. Button, sollen automatisch Button1, Button2, Button4 und Button 5 auf unchecked gehen...
Im Grunde macht die QCheckBox genau das, was du möchtest:

http://doc.qt.nokia.com/4.7/qcheckbox.html#details

Aber falls du es wirklich selbst machen möchtest:
Ich denke ich bräuchte ein allgemeines clicked()-Ereignis, das von allen Knöpfen ausgelöst werden kann. Nur wie bestimme ich dann, welcher der 5 Buttons der Auslöser war?
Es gibt mehrere Varianten, aber nur eine elegante: die mit einem QSignalMapper:
http://doc.qt.nokia.com/4.7/qsignalmapper.html#details

hth!

Verfasst: 13. November 2010 11:46
von tux.2000
Danke für die ersten Tipps dahingehend!

Das Ziel soll aber strikt sein es mit den PushButtons zu realisieren...

Verfasst: 13. November 2010 12:11
von google
Dann verbinden deine PushButtons doch zu einer QButtongroup. Dann Guckst du welcher gedrückt wird und machst ne ifabfrage in der du die buttons ausstellst.

Verfasst: 13. November 2010 13:08
von upsala
Oder man verwendet QButtonBox::setExclusive(bool)

Verfasst: 13. November 2010 13:18
von tux.2000
Danke, also das hat jetzt ganz gut geklappt:

1. Im Designer die Buttons anwählen die zu einer Gruppe gehören.
2. Mit Rechtsklick eine QButtonGroup erstellen
(Standardmäßig ist hierbei "exclusive = True" was auch von mir gewünscht ist).
3. Dann einen Button der Gruppe auswählen und diesen auf "checked = True" setzen. Dies ist die Startbedingugn der Gruppe.

Super. Bin begeistert.
Und danke nochmal.