首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTreeWidgetItem不被检查

QTreeWidgetItem不被检查
EN

Stack Overflow用户
提问于 2018-04-16 19:25:11
回答 1查看 24关注 0票数 0

在初始化树之后,我尝试从函数中检查Tree项。检查标记永远不会出现。我不确定我是否需要‘刷新’树,或者我没有与正确的对象交互。

我已经读了很多关于这个小部件的文章,我在几个网站上或多或少地看到了同样的问题,但是答案是8+的,两页代码,或者我只是不明白它们。

我在这里做错什么了?当我调用checkActiveTreeItems()时,为什么树中没有检查标记?

在REST调用之后,我想更新树中的检查项。这似乎是可以的,但这些项目从来没有被检查。

代码语言:javascript
复制
def checkActiveTreeItems(self):
    for label in self.transactie['transactie']['labels']:
        test = QtWidgets.QTreeWidgetItem([label])
        test.setCheckState(0, QtCore.Qt.Checked)

这是创建树的函数,在将QTreeWidgetItem设置为在上面的函数中签入之后,我不再调用它。

代码语言:javascript
复制
def initTree(self):
    print("initTree")
    self.treeWidget = QtWidgets.QTreeWidget(self.gridLayoutWidget)

   self.treeWidget.setSelectionMode(QtWidgets.QAbstractItemView.ContiguousSelection)
    self.treeWidget.setObjectName("treeWidget")

    inkomstenstructuur = requests.get(url="http://localhost:32769/_db/piekenpijp/incoming/inkomstenstructuur")
    iscontent = json.loads(inkomstenstructuur.content)
    self.inkomsten = iscontent
    inkomstentree = QtWidgets.QTreeWidgetItem(["Inkomsten"])

    for groep in iscontent:
        child = QtWidgets.QTreeWidgetItem([groep['groep']])
        inkomstentree.addChild(child)
        for categorie in groep['categorien']:
            child2 = QtWidgets.QTreeWidgetItem([categorie])
            child2.setCheckState(0, QtCore.Qt.Unchecked)
            child.addChild(child2)

    uitgavenstructuur = requests.get(url="http://localhost:32769/_db/piekenpijp/incoming/uitgavenstructuur")
    uscontent = json.loads(uitgavenstructuur.content)
    self.uitgaven = uscontent
    uitgaventree = QtWidgets.QTreeWidgetItem(["Uitgaven"])

    for groep in uscontent:
        child = QtWidgets.QTreeWidgetItem([groep['groep']])
        uitgaventree.addChild(child)
        for categorie in groep['categorien']:
            child2 = QtWidgets.QTreeWidgetItem([categorie])
            child2.setCheckState(0, QtCore.Qt.Unchecked)
            child.addChild(child2)

    self.treeWidget.itemChanged.connect(self.vinkje)

    self.treeWidget.resize(500, 200)
    self.treeWidget.setColumnCount(1)
    self.treeWidget.setHeaderLabels(["Categorie"])
    self.treeWidget.addTopLevelItem(inkomstentree)
    self.treeWidget.addTopLevelItem(uitgaventree)
    self.treeWidget.expandItem(uitgaventree)
    self.gridLayout.addWidget(self.treeWidget, 0, 2, 1, 1)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-17 00:08:14

当前方法创建一个新项,设置其检查状态,然后在不使用它的情况下抛出它。相反,您需要在已经创建的树中使用找到物品

代码语言:javascript
复制
def checkActiveTreeItems(self):
    for label in self.transactie['transactie']['labels']:
        for item in self.treeWidget.findItems(label, Qt.MatchExactly):
            item.setCheckState(0, QtCore.Qt.Checked)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49864825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档