Qt / C ++: Segnale per quando un QListWidgetItem viene controllato?
-
27-09-2019 - |
Domanda
Nella mia forma ho un QListWidget
che contiene QListWidgetItems
controllabile. Sto cercando un modo per catturare l'evento di un QListWidgetItem
essere controllato / incontrollato. Non vedo alcun tale segnale esistente per questo, ma forse mi sbaglio. Quello che sto facendo attualmente è utilizzando il segnale QListWidget::itemClicked()
e controllando la checkState
del QListWidgetItem
, ma questo non è quello che voglio, perché questo evento si verifica ogni volta che la voce si fa clic, non solo è andato il segno di spunta viene alternata. Qualcuno può dare qualche aiuto? Grazie!
Soluzione
A quanto pare tale segnale viene fornito, la soluzione migliore è quella di utilizzare QListWidget::itemChanged(QListWidgetItem* item)
, e la scansione del conseguente item->checkState()
. Questo dovrebbe essere un leggero miglioramento rispetto usando itemClicked
Altri suggerimenti
Una possibilità in più è quella di utilizzare il proprio QAbstractListModel
con un QListView
. In un primo momento questo non aggiungere del codice extra come è necessario aggiungere il proprio codice di gestione. Ma si vuole ricevere un accesso di livello inferiore. Fondamentalmente perché l'QListView
chiederà il vostro modello che cosa fare. Sarà anche inoltrare di nuovo ingresso al vostro listmodel dove è possibile collegare in esso.
In alternativa si potrebbe sottoclasse QStandardItemModel
e catturare alcune modifiche relative alla modifica della casella di controllo.