前言
本文主要介绍的是使用代码生成的情况下对控件的介绍,包括拥有的功能及能修改的样式,也会说明在qtdesiner拖拽控件生成和使用代码生成控件的区别(如果有的话,遇到了的会说),此版本不属于最终版本,以后遇到什么新奇的点会继续更新!本文基于QT官方的文档进行的编写,QT版本为qt 5.14.0,编写环境为Windows11。不得不说官方文档真是个好东西,有时候有些不会的上去一看就能有灵感解决了,可惜没有中文版本的。
一、QTreeView初步介绍
QTreeView是 Qt 框架中用于显示和编辑层次化数据的核心视图组件。作为 QAbstractItemView的直接子类,它专门用于展示树状结构数据,是文件浏览器、配置面板、组织结构图等应用的理想选择。
二、关键属性与方法
1. 树形结构控制
展开与折叠控制:
// 展开指定节点
treeView->expand(const QModelIndex &index);
// 折叠指定节点
treeView->collapse(const QModelIndex &index);
// 展开所有节点
treeView->expandAll();
// 折叠所有节点
treeView->collapseAll();
// 展开到指定路径(很有用!)
treeView->expandToPath(const QString &path); // 需要模型支持
自动展开设置:
// 设置是否在选中时自动展开
treeView->setExpandsOnDoubleClick(true);
// 设置动画效果
treeView->setAnimated(true); // 展开/折叠时有动画效果
// 设置缩进大小(控制层级间距)
treeView->setIndentation(20); // 默认是20像素
treeView->setIndentation(0); // 设置为0可以创建紧凑的树
2.列设置
QTreeView支持为每个节点显示多个数据列
// 设置列数(通常由模型决定)
treeView->setColumnCount(3); // 如果需要手动设置
// 显示/隐藏根节点的装饰(前面的箭头图标)
treeView->setRootIsDecorated(true); // 显示展开/折叠箭头
// 设置标题
treeView->header()->setVisible(true); // 显示列标题
treeView->setHeaderLabels({
"名称", "大小", "修改日期"}); // 如果使用QStandardItemModel
// 自动调整列宽
treeView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
3.选择行为
// 设置选择模式
treeView->setSelectionMode(QAbstractItemView::SingleSelection); // 单选
treeView->setSelectionMode(QAbstractItemView::ExtendedSelection); // 多选
// 设置选择行为
treeView->setSelectionBehavior(QAbstractItemView::SelectItems); // 选择单个项
treeView->setSelectionBehavior(QAbstractItemView::SelectRows); // 选择整行
4.外观定制
// 设置交替行颜色
treeView->setAlternatingRowColors(true);
// 设置是否显示网格线
treeView->setGridStyle(Qt::DotLine);
// 设置图标大小
treeView->setIconSize(QSize(16, 16));
// 设置统一行高(提升性能)
treeView->setUniformRowHeights(true); // 当所有行高度相同时设置此项
三、基本使用示例
示例1:使用 QStandardItemModel 创建简单树形结构
#include <QApplication>
#include <QTreeView>
#include <QStandardItemModel>
#include <QStandardItem>
#include <QVBoxLayout>
#include <QHeaderView>
#include <QWidget>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget window;
QVBoxLayout *layout = new QVBoxLayout(&window);
// 创建树形视图
QTreeView *treeView = new QTreeView;
// 创建标准项模型
QStandardItemModel *model

2万+

被折叠的 条评论
为什么被折叠?



