checkable Buttons gegeneinander "verriegeln"

Alles rund um die Programmierung mit Qt
Antworten
tux.2000
Beiträge: 13
Registriert: 19. Juni 2008 08:09

checkable Buttons gegeneinander "verriegeln"

Beitrag 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.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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!
tux.2000
Beiträge: 13
Registriert: 19. Juni 2008 08:09

Beitrag von tux.2000 »

Danke für die ersten Tipps dahingehend!

Das Ziel soll aber strikt sein es mit den PushButtons zu realisieren...
google
Beiträge: 15
Registriert: 1. November 2010 13:23

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Oder man verwendet QButtonBox::setExclusive(bool)
tux.2000
Beiträge: 13
Registriert: 19. Juni 2008 08:09

Beitrag 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.
Antworten