Qt/С++: сигнал, когда проверяется проверка QListWidgetItem?

В моей форме у меня есть QListWidget, который содержит проверяемые QListWidgetItems. Я ищу способ захватить событие QListWidgetItem, которое проверяется/не проверяется. Я не вижу такого сигнала для этого, но, возможно, я ошибаюсь. В настоящее время я использую сигнал QListWidget:: itemClicked() и проверяю checkState для QListWidgetItem, но это не то, что я хочу, потому что это событие происходит в любое время, когда элемент кликается, а не только галочка переключается, Может ли кто-нибудь помочь? Спасибо!

Ответ 1

По-видимому, такой сигнал не предоставляется, лучше всего использовать QListWidget::itemChanged(QListWidgetItem* item) и сканировать полученный item->checkState(). Это должно быть небольшое улучшение по сравнению с использованием itemClicked

Ответ 2

Дополнительным вариантом является использование вашего собственного QAbstractListModel с QListView. Сначала это добавляет дополнительный код, поскольку вам нужно добавить свой собственный код управления. Но вы получаете доступ на более низкий уровень. В основном потому, что QListView спросит вашу модель, что делать. Он также ретранслирует вход обратно в вашу listmodel, где вы можете подключиться к нему.

В качестве альтернативы вы можете подклассифицировать QStandardItemModel и уловить некоторые изменения, связанные с изменением флажка.