【发布时间】:2014-07-23 20:30:11
【问题描述】:
我正在使用 QTreeView 来显示目录的内容。它按预期工作,除了我希望能够在所有层次结构打开的情况下显示它。我希望 QTreeView.expandAll() 方法可以做到这一点,但实际上在扩展根目录之前,子目录的 ModelItems 似乎并不存在。 我需要做什么才能查看完全展开的目录结构?
import sys
from PyQt4 import QtGui
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.treeView = QtGui.QTreeView(self)
self.treeView.setGeometry(0,0, 600, 800)
self.model = QtGui.QFileSystemModel()
self.path = "/opt"
self.model.setRootPath(self.path)
self.treeView.setModel(self.model)
self.treeView.setRootIndex(self.model.index(self.path))
self.treeView.expandAll()
self.setGeometry(300, 300, 600, 800)
self.setWindowTitle('Toggle button')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我已经通过执行 os.walk 并在该目录上手动执行 setRootPath 获得了预期的结果,如下所示,但我想知道是否有更“内置”的 Qt 方式。
for root, dirs, files in os.walk(self.path):
self.model.setRootPath(root)
【问题讨论】: