如何自动展开QTreeWidget项

3 投票
1 回答
8801 浏览
提问于 2025-04-18 16:16

下面的代码创建了一个简单的 QTreeWidget,里面有两个项目,一个是另一个的父项。

我希望这些项目一开始就能展开(这样用户就不需要点击箭头来展开项目):

这是默认的样子:

这里插入图片描述

而我希望它的样子是这样的(展开后:“C”项目是可见的):

这里插入图片描述

需要设置哪个属性才能实现这个效果呢?

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])

class Tree(QtGui.QTreeWidget):
    def __init__(self, *args, **kwargs):
        super(Tree, self).__init__() 
        parentItem=QtGui.QTreeWidgetItem('P')
        self.addTopLevelItem(parentItem)
        childItem=QtGui.QTreeWidgetItem('C')
        parentItem.insertChild(0, childItem)
        self.show()
tree=Tree()
sys.exit(app.exec_())

1 个回答

8

你可以使用 QTreeWidget.expandToDepth() 这个方法。

在你的情况下:

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])

class Tree(QtGui.QTreeWidget):
    def __init__(self, *args, **kwargs):
        super(Tree, self).__init__() 
        parentItem=QtGui.QTreeWidgetItem('P')
        self.addTopLevelItem(parentItem)
        childItem=QtGui.QTreeWidgetItem('C')
        parentItem.insertChild(0, childItem)
        self.expandToDepth(0)
        self.show()
tree=Tree()
sys.exit(app.exec_())

你也可以使用 expandAll() 这个方法来展开所有内容,而不仅仅是展开到某个深度。

撰写回答