QT M/V架构开发实战:QTreeView介绍

前言


本文主要介绍的是使用代码生成的情况下对控件的介绍,包括拥有的功能及能修改的样式,也会说明在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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值