我正在尝试创建一个复选框项目列表,用于更改激活时的状态。我可以连接激活信号,一切正常,但屏幕上的变化。我是不是错过了几步?
以下是列表创建:
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)
我在单击后验证了该处理程序是否被激发-如果我将打印放在那里,它将交替显示“选中”/“未选中”。如何刷新复选框本身?
编辑:尝试调用update()并发出itemChanged信号…到目前为止还没有运气。