如何检查QTreeWidget项的状态?
使用:
item=QtGui.QTreeWidgetItem()
item.setCheckState(0,QtCore.Qt.Unchecked)
在TreeWidget中,项目被设置为显示一个复选框。我希望你能告诉我如何把项目的复选框状态变化连接到一个函数(这样每次项目的复选框状态改变时,我都可以调用这个函数)。我还想知道应该查询项目的哪个属性,以便获取复选框的当前状态。到目前为止,我一直在使用QTreeWidget的
.itemChanged.connect(self.myFunction)
但我得到的只是项目对象本身。有什么项目的属性可以用来获取它的复选框状态呢?...
1 个回答
6
看起来我以前也遇到过你这个问题,使用了这个解决方案,是ekhumoro提供的:
def handle(self, item, column):
self.treeWidget.blockSignals(True)
if item.checkState(column) == QtCore.Qt.Checked:
self.handleChecked(item, column)
elif item.checkState(column) == QtCore.Qt.Unchecked:
self.handleUnchecked(item, column)
self.treeWidget.blockSignals(False)
class TreeWidgetItem(QtGui.QTreeWidgetItem):
def setData(self, column, role, value):
state = self.checkState(column)
QtGui.QTreeWidgetItem.setData(self, column, role, value)
if (role == QtCore.Qt.CheckStateRole and
state != self.checkState(column)):
treewidget = self.treeWidget()
if treewidget is not None:
treewidget.itemChecked.emit(self, column)
class Window(QtGui.QTreeWidget):
itemChecked = QtCore.pyqtSignal(object, int)
def __init__(self, rows, columns):
QtGui.QTreeWidget.__init__(self)
self.itemChecked.connect(self.handleItemChecked)
def handleItemChecked(self, item, column):
print 'ItemChecked', int(item.checkState(column))
对我来说效果很好 :)