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

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

2 ответов


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


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

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