QT5 QTreeview
时间: 2025-05-22 17:44:00 浏览: 12
### QT5 中 QTreeView 的用法与示例
QTreeView 是 Qt 提供的一个用于显示层次化数据的视图组件。它通常与模型类(如 `QStandardItemModel` 或自定义模型)一起使用来展示树形结构的数据。
#### 基本概念
QTreeView 使用 Model/View 架构,这意味着它的功能依赖于底层的数据模型。这种设计允许开发者通过更改模型轻松调整数据显示方式[^3]。
以下是关于如何设置和配置 QTreeView 的一些基本方法:
#### 设置样式表
可以通过样式表对 QTreeView 进行外观定制。例如,可以修改分支节点的颜色或者特定状态下的背景颜色:
```css
QTreeView::branch:has-siblings:adjoins-item {
background: red;
}
```
上述代码片段展示了如何改变具有兄弟节点并紧邻项目的分支项背景颜色为红色[^1]。
#### 添加子控件到父容器中的样式应用
如果希望在状态栏或其他复杂布局中嵌入 QTreeView 并对其内部部件进行样式设定,则可采用后代声明的方式实现个性化效果:
```css
QStatusBar QLabel {
border: 3px solid white;
}
```
此例子说明了当某些小部件被加入到像 QStatusBar 那样的高级组件里时,仍然能够利用 CSS 技巧单独美化它们[^2]。
#### 自定义按钮样式的实例
对于更具体的 UI 组件比如按钮,也可以借助对象名称来进行精确控制其表现形式:
```css
QPushButton#evilButton {
background-color: red;
}
```
这里演示了一个简单的案例——给定 ID 为 evilButton 的 push button 应用了特殊的红色填充作为默认背景色[^4]。
#### Python 实现示例
下面是一个完整的基于 PyQt5 的简单程序,该程序创建了一个窗口,在其中放置了一棵带有几层目录结构的 tree view 控制台界面。
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeView, QVBoxLayout, QWidget
from PyQt5.QtGui import QStandardItemModel, QStandardItem
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("QTreeView Example")
# Create Tree View widget.
tree_view = QTreeView()
# Setup data model for the tree view.
model = QStandardItemModel()
root_node = model.invisibleRootItem()
item0 = QStandardItem('Folder A')
item1 = QStandardItem('File B.txt')
sub_item_0 = QStandardItem('Sub Folder C')
sub_sub_item_0 = QStandardItem('Deep File D.docx')
item0.appendRow([sub_item_0])
sub_item_0.appendRow([sub_sub_item_0])
root_node.appendRow([item0, None])
root_node.appendRow([item1, None])
tree_view.setModel(model)
layout = QVBoxLayout()
layout.addWidget(tree_view)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
```
以上脚本构建了一个基础的应用场景,其中包括一个顶层文件夹及其包含的内容列表以及另一个独立条目代表单个文档文件。
阅读全文
相关推荐


















