从QTreeWidget中删除非顶级项目

时间:2013-06-08 13:22:23

标签: python pyside qtreewidget

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

1 个答案:

答案 0 :(得分:0)

好的,经过长达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
相关问题