Ich schreibe eine qt
-basierte C++ - Anwendung. Ich habe eine Reihe von Tasten, die ich gegenseitig ausschließen möchte - nur eine kann auf einmal umgeschaltet werden. In der Regel verwende ich dafür eine QButtonGroup - es bietet eine nette logische Möglichkeit zum Verwalten von Tastengruppen. Wenn man gedrückt wird, wird die zuvor gedrückte gedrückt, was genau das Verhalten ist, das ich möchte.Alternative zu QButtonGroup, die keine Auswahl erlaubt?
Diesmal möchte ich jedoch zulassen, dass die Gruppe vollständig deaktiviert wird. Leider scheint dies durch QButtonGroup
nicht anerkannt werden:
exklusiv: bool
Diese Eigenschaft enthält, ob die Schaltfläche Gruppe exklusiv ist.
Wenn diese Eigenschaft wahr ist, kann nur eine Schaltfläche in der Gruppe jederzeit überprüft werden. Der Benutzer kann auf eine beliebige Schaltfläche klicken, um es zu überprüfen, und diese Schaltfläche wird die vorhandene als die überprüfte Schaltfläche in der Gruppe ersetzen.
In einer exklusiven Gruppe, , kann der Benutzer die derzeit überprüfte Schaltfläche nicht deaktivieren, indem er darauf klickt; stattdessen muss eine andere Schaltfläche in der Gruppe geklickt werden, um die neue überprüfte Schaltfläche für diese Gruppe festzulegen.
Es gibt natürlich eine Reihe von Möglichkeiten, dies zu umgehen. Ich frage mich, ob es eine vorgefertigte Alternative zu QButtonGroup
gibt, die dieses Verhalten erlaubt, so dass 1) ich das Rad nicht neu erfinde und 2) ich innerhalb von idiomatic qt
bleiben kann, um die Projektverwaltung in der Zukunft zu erleichtern.
Irgendwelche Vorschläge?
AFAIK Nö.Besonders in diesem Fall ist Code erforderlich, um Ihre Funktionalität zu erhalten ist sehr minimal. Deaktivieren Sie die exklusive Eigenschaft nur aus der Schaltflächengruppe, wenn Sie alle in einem Ereignisfilter/Mausklick-Ereignis deaktiviert haben möchten und das Senderobjekt mit der aktuell gedrückten Schaltfläche identisch ist. Andernfalls schalten Sie die exklusive Eigenschaft ein, wenn sie noch nicht aktiviert ist. – Viv
Drei Jahre später, aber ich habe heute festgestellt, dass wenn ich Autoexclusive anstelle von QButtonGroup und Qt 4.8.6 benutze, bin ich in der Lage, den ausgewählten Radiobutton abzuwählen. Nicht sicher, ob dies ein Fehler ist oder nicht. – Phlucious