【问题标题】:Deleting a non-toplevel item from a QTreeWidget从 QTreeWidget 中删除非顶层项目
【发布时间】:2013-06-08 13:22:23
【问题描述】:

在文档中,我看到可以使用takeTopLevelItem() 从 QTreeWidget 中删除顶级项目。但是,我需要删除 not 顶级的项目。我完全不知道如何做到这一点,所以我在这里寻求帮助。我所做的任何谷歌搜索都没有正确的结果,而且 PySide 文档完全没有帮助。我怀疑有一种简单的方法可以做到这一点,但我想多了,但我不知道如何找到它。

【问题讨论】:

    标签: python pyside qtreewidget


    【解决方案1】:

    好的,经过 3 天漫长的思考,我意识到答案,正如我所怀疑的那样,相当简单(但可能有点复杂)。

    当 QTreeWidget 被右键单击时,我试图删除该项目(只是一点背景,以便您理解我的代码)。

    tree = QTreeWidget()
    
    def delItem(e):
        if e.reason() == QContextMenuEvent.Mouse:
            itemClicked = tree.itemAt(e.pos())
            for topItem in range(0,tree.topLevelItemCount()):
                topItem = tree.topLevelItem(topItem)
                if topItem.isSelected():
                    tree.takeTopLevelItem(tree.indexOfTopLevelItem(topItem))
                else:
                    def checkChildren(item):
                        if item.childCount() >= 0:
                            for childItem in range(0,item.childCount()):
                                childItem = item.child(childItem)
                                if childItem.isSelected():
                                    item.removeChild(childItem)
                                else:
                                    childItem.checkChildren()
                    checkChildren(topItem)
    
    tree.contextMenuEvent = delItem
    

    【讨论】:

      猜你喜欢
      • 2017-01-12
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      相关资源
      最近更新 更多