PyQt5中的Tree view

发布于:2024-05-17 ⋅ 阅读:(128) ⋅ 点赞:(0)

1. 基本概念

Tree View是一种用于显示层次化数据的组件。在PyQt5中,QTreeView可以用来展示树形结构的数据,比如文件目录、组织结构图等。它能够通过展开和折叠节点来浏览和管理复杂的数据层次。

2. 一个基本的Tree View示例

下面一个简单的示例,展示了如何创建一个基本的Tree View。

import sys
from PyQt5.QtWidgets import QApplication, QTreeView, QFileSystemModel, QMainWindow

class TreeViewDemo(QMainWindow):
    def __init__(self):
        super().__init__()
        
        # 设置窗口标题和大小
        self.setWindowTitle('Tree View 示例')
        self.setGeometry(100, 100, 600, 400)
        
        # 创建QTreeView对象
        self.tree = QTreeView(self)
        self.setCentralWidget(self.tree)
        
        # 设置文件系统模型
        self.model = QFileSystemModel()
        self.model.setRootPath('')
        self.tree.setModel(self.model)
        self.tree.setRootIndex(self.model.index(''))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    demo = TreeViewDemo()
    demo.show()
    sys.exit(app.exec_())

3. 自定义节点

你可以创建自定义的模型来代替QFileSystemModel,例如QStandardItemModel。

import sys
from PyQt5.QtWidgets import QApplication, QTreeView, QFileSystemModel, QMainWindow
from PyQt5.QtGui import QStandardItemModel, QStandardItem


class CustomTreeViewDemo(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle('自定义 Tree View 示例')
        self.setGeometry(100, 100, 600, 400)

        self.tree = QTreeView(self)
        self.setCentralWidget(self.tree)

        # 创建自定义模型
        self.model = QStandardItemModel()
        self.model.setHorizontalHeaderLabels(['Name', 'Description'])

        # 添加根节点
        rootNode = self.model.invisibleRootItem()

        # 添加子节点
        item1 = QStandardItem('Item 1')
        item1_desc = QStandardItem('Description for Item 1')
        rootNode.appendRow([item1, item1_desc])

        item2 = QStandardItem('Item 2')
        item2_desc = QStandardItem('Description for Item 2')
        rootNode.appendRow([item2, item2_desc])

        self.tree.setModel(self.model)



if __name__ == "__main__":
    app = QApplication(sys.argv)
    demo = CustomTreeViewDemo()
    demo.show()
    sys.exit(app.exec_())

4. 参考资料

  1. PyQt5 官方文档