Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt4 在ListWidgetItem上设置checkstate_Qt4_Pyqt4_Maemo - Fatal编程技术网

Qt4 在ListWidgetItem上设置checkstate

Qt4 在ListWidgetItem上设置checkstate,qt4,pyqt4,maemo,Qt4,Pyqt4,Maemo,我正在尝试创建一个复选框项目列表,用于更改激活时的状态。我可以连接激活信号,一切似乎都正常,但屏幕上发生了变化。我是不是遗漏了一些步骤 以下是列表创建: self.listField = QtGui.QListWidget(self) muted_categories = qb.settingsCollection['mutedCategories'].split('|') main_categories = sorted(set(qb.categoryTopNames.values()))

我正在尝试创建一个复选框项目列表,用于更改激活时的状态。我可以连接激活信号,一切似乎都正常,但屏幕上发生了变化。我是不是遗漏了一些步骤

以下是列表创建:

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信号。。。到目前为止运气不好。

我现在不能测试这个,但是。。。我的印象是PyQt4在检查/取消检查项目时自动处理屏幕更新(至少对于QCheckBox项目是这样)。在我看来,事件处理程序实际上正在撤消用户的操作。你试过注释掉self.connect线路并再次运行吗

据我所知,setCheckState()实际上是用于设置每个项目的默认状态