Qt / C ++: Signal für, wenn ein QListWidgetItem geprüft?
-
27-09-2019 - |
Frage
In meiner Form habe ich eine QListWidget
, die überprüfbar QListWidgetItems
enthält. Ich bin auf der Suche nach einer Möglichkeit, das Ereignis eines QListWidgetItem
Wesen aktiviert / deaktiviert zu erfassen. Ich sehe kein solches Signal für das bestehende, aber vielleicht bin ich falsch. Was ich zur Zeit tun, ist das QListWidget::itemClicked()
Signal verwendet und die checkState
der QListWidgetItem
Kontrolle, aber das ist nicht das, was ich will, weil dieses Ereignis das Element jederzeit geschieht geklickt wird, ging nicht nur das Häkchen umgeschaltet wird. Kann jemand etwas Unterstützung geben? Dank!
Lösung
Offenbar kein solches Signal zur Verfügung gestellt, ist Ihre beste Wette QListWidget::itemChanged(QListWidgetItem* item)
und scannen die resultierende item->checkState()
. Dies sollte eine leichte Verbesserung gegenüber der Verwendung itemClicked
sein
Andere Tipps
Eine zusätzliche Option ist für Ihre eigene QAbstractListModel
mit einem QListView
zu verwenden. Zunächst tut dies etwas mehr Code hinzufügen, wie Sie Ihren eigenen Management-Code hinzufügen müssen. Aber Sie tun einen geringeren Zugang zu bekommen. Im Grunde genommen, weil die QListView
wird Ihr Modell fragen, was zu tun ist. Es wird auch Eingang zurück zu Ihrem Listmodel Relais, wo man in sie einhaken kann.
Alternativ können Sie QStandardItemModel
Unterklasse und bestimmte Änderungen fangen in Bezug auf das Kontrollkästchen zu ändern.