J'essaie de créer une liste d'éléments de case à cocher qui modifient le statut lors de l'activation. Je peux connecter le signal d'activation et tout semble fonctionner, mais change à l'écran. Est-ce que je manque des étapes ici?Définition de checkstate sur un ListWidgetItem
est ici la création de la liste:
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)
et voici le gestionnaire:
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)
J'ai vérifié que le gestionnaire est tiré après avoir cliqué sur - si je mets des impressions là, il alterne « vérifié »/"non coché". Que puis-je faire pour actualiser les cases à cocher elles-mêmes? Edit: essayé d'appeler update() et d'émettre les signaux itemChanged ... pas de chance jusqu'à maintenant.