2010-11-23 8 views
14

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

+1

Я думаю, что обойти это можно с помощью сигнала QListWidget :: itemChanged(), который запускается, когда я проверяю/снимаю элемент, но он также срабатывает, если я отредактирую значение элемента, хотя, m не делает сейчас, все еще является несовершенным решением. – Joseph 2010-11-23 05:30:59

+1

Другая проблема с `QListWidget :: itemClicked()` заключается в том, что она не срабатывает, когда вы используете клавиатуру, например, используйте клавишу пробела для изменения состояния проверки. – Hossein 2013-03-22 11:30:05

ответ

18

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

0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^