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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top