【问题标题】:How to check state of QTreeWidget Item?如何检查 QTreeWidget 项的状态?
【发布时间】:2014-04-15 12:32:39
【问题描述】:

使用:

    item=QtGui.QTreeWidgetItem()
    item.setCheckState(0,QtCore.Qt.Unchecked)

TreeWidget 项被设置为显示一个复选框。如果您向我展示如何将项目的复选框状态更改连接到一个函数,我将不胜感激(这样我可以在每次项目的复选框状态更改时链接一个函数)。而且我想知道应该查询什么项目的属性才能获得复选框的当前状态。到目前为止,我一直在使用 QTreeWidget 的

.itemChanged.connect(self.myFunction)

但我得到的只是 Item 对象本身。可以使用 Item 的什么属性来获取其复选框的状态?...

【问题讨论】:

    标签: python pyqt


    【解决方案1】:

    看起来我曾经遇到过你的问题并使用this solution by 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))
    

    对我来说效果很好:)

    【讨论】:

    • 我刚刚给你的答案加了 100 分!这正是需要的!
    • Window() 的构造函数的预期行和列参数的用途是什么:def __init__(self, rows, columns)?
    猜你喜欢
    • 2020-05-12
    • 2018-01-06
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多