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_())