Я пытаюсь создать список элементов флажка, которые изменяют статус при активации. Я могу подключить сигнал активации, и все работает, но меняется на экране. Я здесь пропустил несколько шагов?Настройка checkstate в ListWidgetItem
Вот создание списка:
self.listField = QtGui.QListWidget(self)
muted_categories = qb.settingsCollection['mutedCategories'].split('|')
main_categories = sorted(set(qb.categoryTopNames.values()))
for category in main_categories:
item = QtGui.QListWidgetItem(category, self.listField)
item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
if category in muted_categories:
item.setCheckState(QtCore.Qt.Checked)
else:
item.setCheckState(QtCore.Qt.Unchecked)
self.listField.connect(self.listField, QtCore.SIGNAL('itemActivated(QListWidgetItem*)'), self.doItemChangeState)
и вот обработчик:
def doItemChangeState(self, item):
""" invert the state of the activated item """
if item.checkState() == QtCore.Qt.Checked:
item.setCheckState(QtCore.Qt.Unchecked)
else:
item.setCheckState(QtCore.Qt.Checked)
Я проверил, что обработчик вызывается после нажатия - если я поставлю печать там, она будет чередоваться «проверено»/"unchecked". Что я могу сделать, чтобы обновить сами флажки?
Редактировать: попробовал вызывать update() и испускать itemChanged сигналы ... пока не повезло.