当前位置: 首页 > news >正文

QT入门Item Views之QTreeView

目录

一、QTreeView界面相关

1、布局介绍

二、基本属性功能

1、设置单元格不能编辑

2、一次选中一个item

3、去掉鼠标移动到单元格上的虚线框

4、最后一列自适应

 三、代码展示   

  1、创建模型,导入模型

  2、 右键菜单栏                              

3、双击鼠标事件


此文为作者原创,创作不易,转载请标明出处!

一、QTreeView界面相关

1、布局介绍

先看下界面中创建个QTreeView

一般在处理较复杂的树形结构数据的时候,使用QTreeView来展示数据

查看下基本属性功能

二、基本属性功能

1、设置单元格不能编辑

ui->treeView->setEditTriggers(QTreeView::NoEditTriggers);//设置单元格不能编辑

2、一次选中一个item

ui->treeView->setSelectionBehavior(QTreeView::SelectItems);

3、去掉鼠标移动到单元格上的虚线框

ui->treeView->setFocusPolicy(Qt::NoFocus);
ui->treeView->header()->setStretchLastSection(true);

4、最后一列自适应

ui->treeView->header()->setStretchLastSection(true);

 三、代码展示   

  1、创建模型,导入模型

 model = new QStandardItemModel(ui->treeView);//创建模型
ui->treeView->setModel(model);//导入模型

加入头部标签设置:

 ui->treeView->header()->setSectionResizeMode(QHeaderView::Stretch);model->setHorizontalHeaderLabels(QStringList()<<u8"项目"<<QStringLiteral("当前值")<<u8"类型");//设置头部标签

然后进行子条目的创建,增加图标

    item = new QStandardItem(u8"区域1");//创建一个条目对象model->appendRow(item);//通过模型对象添加这个条目item->setIcon(QIcon(":/image/item1.png"));//添加图标model->setItem(1,0,new QStandardItem(u8"区域2"));model->setItem(2,0,new QStandardItem(u8"区域3"));model->item(1)->setIcon(QIcon(":/image/item1.png"));

  2、 右键菜单栏                              

调用的信号是customContextMenuRequested()

QModelIndex current_index = ui->treeView->indexAt(pos);//选择对应的根节点,并添加右击删除的操作if(current_index.parent()== ui->treeView->rootIndex()){QMenu* popMenu = new QMenu(ui->treeView);QAction* start = new QAction(u8"开始", this);QAction* stop = new QAction (u8"停止",this);popMenu->addAction(start);popMenu->addAction(stop);popMenu->exec(QCursor::pos());delete start;delete stop;delete popMenu;}

3、双击鼠标事件

双击鼠标,针对不同的节点,有效不一样,调用信号如下:

代码展示:

void Widget::on_treeView_doubleClicked(const QModelIndex &index)
{if(index.parent()==ui->treeView->rootIndex()){qDebug()<<"first="<<index.data().toString();//只针对根节点有效}else if(index.parent().parent()==ui->treeView->rootIndex())//只针对二级节点有效{qDebug()<<"second="<<index.data().toString();}else if(index.parent().parent().parent()==ui->treeView->rootIndex()) //只针对三级节点有效{qDebug()<<"third="<<index.data().toString();}
}

 

Demo展示

先放在精灵球中,后期开放

推荐博客:精灵球Plus介绍_清风徐来Groot的博客-CSDN博客

百度云盘:链接:https://pan.baidu.com/s/11b634VvKMIsGdahyBLpZ3Q   提取码:6666  

http://www.lryc.cn/news/34492.html

相关文章:

  • Servlet | Servlet简单入门——构建第一个Servlet项目
  • Spring的IOC/DI,依赖注入的实现
  • 【tensorflow onnx】TensorFlow2导出ONNX及模型可视化教程
  • 天梯赛训练L1-013--L1-015
  • 进程(操作系统408)
  • 浅谈运维工程师的开发能力的培养
  • Netcode升级到1.2.0网络变量的变化的变化
  • 冥想第七百二十二天
  • AB测试——流程介绍(定义问题和指标选取)
  • Linux(Centos)安装Minio集群
  • LeetCode 1662. 检查两个字符串数组是否相等 / 795. 区间子数组个数 / 剑指 Offer 47. 礼物的最大价值
  • 【C++】缺省参数函数重载
  • Hbuilder 下载与安装教程
  • Mybatis工程升级到FlunetMybatis后引发的问题以及解决方法
  • Oracle VM VirtualBox6.1.36导入ova虚拟机文件报错,代码: E_INVALIDARG (0x80070057)
  • Superset数据探索和可视化平台入门以及案例实操
  • VisualSP Enterprise - February crack
  • 004+limou+HTML——(4)HTML表格
  • uniapp实现自定义相机
  • 插值多项式的龙格现象的介绍与模拟
  • Spring整体架构包含哪些组件?
  • 开发接口需要考虑哪些问题?
  • 关于Activiti7审批工作流绘画流程图(2)
  • String.format()对日期进行格式化
  • 核酸检测信息管理系统
  • 典型回溯题目 - 全排列(一、二)
  • 数据清洗和特征选择
  • java StringBuilder 和 StringBuffer 万字详解(深度讲解)
  • 【Linux】帮助文档查看方法
  • UEFI 实战(2) HelloWorld 之一 helloworld及.inf文件