【qt】QTreeWidget 树形组件

QTreeWidget 树形组件

  • 一.什么是树形组件
  • 二.界面设计树形组件
  • 三.代码实现
    • 1.清空
    • 2.设置列数
    • 3.设置头标签
    • 4.添加根目录
      • ①QTreeWidgetitem
      • ②设置文本
      • ③设置图标
      • ④添加为顶层目录
    • 5.添加子目录
      • ①初始化为父目录
      • ②子目录添加到父目录
      • ③获取到子目录
  • 四.插入目录
    • 1.获取当前选中目录项
    • 2.子目录插入
    • 3.根目录插入
    • 4.获取当前索引的行号
    • 5.插入功能
  • 五.删除目录
    • 1.设置选择目录形式
    • 2.获取当前所有选择的目录
    • 3.删除子目录
    • 4.删除根目录
    • 5.删除功能
  • 六.文本编辑器显示
    • 1.对**TreeWidget**转到槽
    • 2.功能实现
  • 七.总结一下

一.什么是树形组件

树形组件,我们可以想象一下我们的文件或者qt左侧的项目。
在这里插入图片描述
对对对,就类似于这样!
还是老样子,我们跟着项目来
上图:
在这里插入图片描述
来吧,开干!

二.界面设计树形组件

在这里插入图片描述
可以双击直接添加树形内容:
在这里插入图片描述
还可以添加子目录
在这里插入图片描述

三.代码实现

1.清空

先将刚刚我们界面添加的清除干净。

 ui->treeWidget->clear();

2.设置列数

设置目录有几列

ui->treeWidget->setColumnCount(2);

3.设置头标签

ui->treeWidget->setHeaderLabels(QStringList("科目","描述"));

运行结果:
在这里插入图片描述

4.添加根目录

①QTreeWidgetitem

注意初始化就是treeWidget

QTreeWidgetItem * root1=new QTreeWidgetItem(ui->treeWidget);

②设置文本

 root1->setText(0,"c语言");    root1->setText(1,"开发基础");

运行结果:
在这里插入图片描述

③设置图标

需要素材的可以dd我

    QIcon icon;icon.addFile(":/image/file.png");root1->setIcon(0,icon);

运行结果:
在这里插入图片描述

④添加为顶层目录

添加为顶层目录,也就是添加成根目录

ui->treeWidget->addTopLevelItem(root1);

5.添加子目录

①初始化为父目录

这里的root1就是我们刚刚添加的根目录

QTreeWidgetItem* item=new QTreeWidgetItem(root1);

②子目录添加到父目录

QStringList list={"指针","程序控制","数据结构","结构体","文件操作"};for(int i=0;i<list.count();i++){QTreeWidgetItem* item=new QTreeWidgetItem(root1);item->setText(0,list[i]);item->setText(1,"熟练掌握");root1->addChild(item);}

现在的运行结果:
在这里插入图片描述

③获取到子目录

要是我们还想要在文件操作的目录下再添加目录可以先获取到文件操作的目录项,再下一层初始化为它。

 auto child=root1->child(4);QStringList list2={"读文件","写文件","查找文件","删除文件"};for(int i=0;i<list2.count();i++){QTreeWidgetItem*item=new QTreeWidgetItem(child);item->setText(0,list2[i]);item->setText(1,"必须掌握");root1->addChild(child);}

运行结果:
在这里插入图片描述
我们还可以再添加一个c++的根目录

QTreeWidgetItem * root2=new QTreeWidgetItem(ui->treeWidget);root2->setText(0,"c++");root2->setText(1,"开发高级");icon.addFile(":/image/file.png");root2->setIcon(0,icon);ui->treeWidget->addTopLevelItem(root2);QStringList list3={"类和对象","继承和派生","运算符重载","虚函数","模板"};for(int i=0;i<list3.count();i++){QTreeWidgetItem* item=new QTreeWidgetItem(root2);item->setText(0,list3[i]);item->setText(1,"熟练掌握");root2->addChild(item);}

运行结果:
在这里插入图片描述

四.插入目录

1.获取当前选中目录项

auto item=ui->treeWidget->currentItem();//获取当前选中项

2.子目录插入

只能通过父目录来插入

item->parent()->insertChild(ui->treeWidget->currentIndex().row(),newItem);

3.根目录插入

 QIcon icon;icon.addFile(":/image/file.png");newItem->setIcon(0,icon);ui->treeWidget->insertTopLevelItem(ui->treeWidget->currentIndex().row(),newItem);

4.获取当前索引的行号

ui->treeWidget->currentIndex().row()

5.插入功能

auto item=ui->treeWidget->currentItem();//获取当前选中项if(item&&item->isSelected()){QTreeWidgetItem *newItem=new QTreeWidgetItem();newItem->setText(0,"未命名");newItem->setText(1,"未命名");auto parent=item->parent();//根目录是会返回空的if(parent)//子目录{item->parent()->insertChild(ui->treeWidget->currentIndex().row(),newItem);}else//根目录{QIcon icon;icon.addFile(":/image/file.png");newItem->setIcon(0,icon);ui->treeWidget->insertTopLevelItem(ui->treeWidget->currentIndex().row(),newItem);}}

运行结果:
在这里插入图片描述
但是我们的未命名不能进行编辑,这怎么能行,我们姚来设置属性

newItem->setFlags(Qt::ItemIsEditable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);

可以通过F1在线文档来查看需要的标识。

在这里插入图片描述
这就可以编辑了
在这里插入图片描述

五.删除目录

1.设置选择目录形式

现在有个问题,我们只能选择一项,不能像windows的文件一样按ctrl就可以选择多项,但是我们可以设置选择模式
还是可以通过F1在线文档去找,注意有时在父类

ui->treeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);

现在按住ctrl就可以选择多个
在这里插入图片描述

2.获取当前所有选择的目录

auto items=ui->treeWidget->selectedItems();

3.删除子目录

只能通过父目录来删

int index=parent->indexOfChild(item);
parent->takeChild(index);

4.删除根目录

通过treeWidget来删

int index=ui->treeWidget->indexOfTopLevelItem(item);
ui->treeWidget->takeTopLevelItem(index);

5.删除功能

void MainWindow::on_actionDel_triggered()
{auto items=ui->treeWidget->selectedItems();for(auto it=items.constBegin();it!=items.end();it++){auto item=*it;auto parent=item->parent();//根目录是会返回空的if(parent)//子目录{int index=parent->indexOfChild(item);parent->takeChild(index);}else//根目录{int index=ui->treeWidget->indexOfTopLevelItem(item);ui->treeWidget->takeTopLevelItem(index);}}
}

运行结果:
在这里插入图片描述

六.文本编辑器显示

1.对TreeWidget转到槽

选择这个信号:
在这里插入图片描述

2.功能实现

void MainWindow::on_treeWidget_itemSelectionChanged()
{auto items=ui->treeWidget->selectedItems();//获取所有选择的目录,返回的是列表for(auto it=items.constBegin();it!=items.end();it++){ui->textEdit->append("已选"+(*it)->text(0)+","+(*it)->text(1));}
}

运行结果:
在这里插入图片描述

七.总结一下

QTreeWidget树形组件,类似于文件的样式,主要是注意初始化的时候,添加的是那个目录。

人的一切痛苦,本质上都是对自己无能的愤怒。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/332156.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据类型之元组、集合和字典

目录 0.三者主要作用 1.元组 元组特点 创建元组 元组解包 可变和不可变元素元组 2.集合 集合特点 创建集合 集合元素要求 集合方法 访问与修改 子集和超集 相等性判断 集合运算 不可变集合 3.字典 字典特点 字典创建和常见操作 字典内置方法 pprin模块 0.…

Vxe UI 表单设计器、零代码平台

vxe-pc-ui Vxe UI 表单设计器、零代码表单设计器 安装 Vxe UI PC端组件库 官方文档 查看 github、gitee // ...import VxeUI from vxe-pc-uiimport vxe-pc-ui/lib/style.css// ...// ...createApp(App).use(VxeUI).mount(#app)// ...使用 vxe-form-design 设计器组件 vxe-fo…

分享活动规划

前两天去参加菁英学院的一些辅导&#xff0c;是关于苏州久富农业机械的发展&#xff0c;看了他们企业的故事&#xff0c;我觉得我们农机很有前景和发展空间&#xff0c;我希望重新经过一次分享活动来分享我的感触&#xff0c;希望能够再次把我学到的内容传输到其他班的同学们 请…

word 全文中 英文字体 和 样式的字体 莫名奇妙地 被改成 “等线”

word全文中英文字体和样式的字体莫名奇妙地被改成“等线” sm word又抽风了&#xff0c;改完论文保存后打开突然发现全文字体都不对劲&#xff0c;吓得冷汗直冒&#xff1a;虽然我用git管理了论文版本&#xff0c;但是只有比较大的修改我才上传了&#xff0c;刚刚修了几个小时…

Redis篇 redis基本命令和定时器原理

基本命令和定时器原理 一. exists命令二. del命令三. Expire命令四. ttl命令五. redis的过期策略六. 定时器的两种设计方式七. type命令 一. exists命令 用来判断key的值是否存在 返回值是key的个数 这样写的话&#xff0c;有没有什么区别呢&#xff1f; 效率变低&#xff0c;消…

猫抓(cat-catch)插件的常规用法

目录 1.1、前言1.2、抓取图片资源1.3、抓取音频资源1.4、抓取视频资源 1.1、前言 本文将介绍利用猫抓&#xff08;cat-catch&#xff09;插件如下抓取网页上的图片、音频、视频等资源&#xff0c;猫抓&#xff08;cat-catch&#xff09;插件的安装及设置请参考推荐一款媒体影音…

ionic关于@angular版本报错解决方案(有效)

最近学校要求使用ionicangular学习&#xff0c;但是出现下面问题&#xff0c;这里我就分享一个我亲测有效的解决方案&#xff0c;提供学习&#xff08;在VScode中&#xff09; npm error code ERESOLVE npm error ERESOLVE could not resolve npm error npm error While resol…

数据迁移测试经验分享

以下为作者观点&#xff1a; 数据迁移&#xff0c;是在保证新旧系统业务连续性的前提下&#xff0c;将数据从旧数据库迁移到新数据库的过程&#xff0c;测试前通过迁移策略和方案了解新旧系统数据如何重构与关联&#xff0c;测试过程需确保数据迁移的正确性&#xff0c;主要体…

vs2013使用qt Linguist以及tr不生效问题

一、qt Linguist&#xff08;语言家&#xff09;步骤流程 1、创建翻译文件,在qt选项中 2.选择对应所需的语言&#xff0c;得到.ts后缀的翻译文件 3.创建.pro文件&#xff0c;并将.ts配置在.pro文件中 3.使用qt Linguist 打开创建好的以.ts为后缀的翻译文件&#xff0c;按图所示…

吴恩达深度学习笔记:超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架(Hyperparameter tuning)3.4-3.5

目录 第二门课: 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第三周&#xff1a; 超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架&#xff08;Hyperparameter …

BUUCTF-Misc24

从娃娃抓起1 1.打开附件 是两个文本文件 2.电报码 电报码在线翻译网站&#xff1a;https://usetoolbar.com/convert/cccn.html 3.汉字五笔编码 汉字五笔编码在线网站查询&#xff1a;https://www.qqxiuzi.cn/bianma/wubi.php 4.转化为MD5值 将文字保存到文本文档 用winR输入…

HarmonyOS应用开发者高级认证考试满分答案(100分)【全网最全-不断更新】

系列文章&#xff1a; HarmonyOS应用开发者基础认证满分答案&#xff08;100分&#xff09; HarmonyOS应用开发者基础认证【闯关习题 满分答案】 HarmonyOS应用开发者高级认证满分答案&#xff08;100分&#xff09; HarmonyOS云开发基础认证满分答案&#xff08;100分&#xf…

【三维修复、分割与编辑】InFusion、Bootstrap 3D、GaussianGrouping、GaussianEditor等(论文总结)

提示&#xff1a; 文章目录 前言一、InFusion&#xff1a;扩散模型助力&#xff0c;效率提高20倍&#xff01;(2024)1. 摘要2. 算法3. 效果 二、2D Gaussian Splatting三、Bootstrap 3D:从扩散模型引导三维重建1.摘要2.相关工作3.方法1.Boostrapping by Diffusion 通过扩散模型…

科技与心理学的协同舞蹈

在探讨盲人如何利用如“蝙蝠避障”这样的辅助软件融入日常生活的同时&#xff0c;我们不得不深入触及盲人教育心理学的核心&#xff0c;这一领域致力于理解盲人在学习与成长过程中独特的心理需求与挑战&#xff0c;以及如何通过教育策略激发他们的潜能&#xff0c;促进全面发展…

01-Linux【准备篇】

一、学Linux的作用&#xff1f; 1.Linux下开发(部署)软件项目 2.Linux运维 二、Linux的强与弱 1.薄弱 个人桌面领域的应用 此领域是传统Linux应用薄弱的环节&#xff0c;近些年随着Ubuntu、fedora等优秀桌面环境的兴起&#xff0c;Linux在个人桌面领域的占有率在慢慢提高…

对话掌阅科技CTO孙凯:如何用生成式AI重新定义阅读体验

导读&#xff1a;生成式AI能对阅读做本质的改造吗&#xff1f; 读一本好书&#xff0c;犹如和一位智者对话。 对于很多热爱读书的人&#xff0c;这是一种令人憧憬的阅读体验。以往&#xff0c;这种对话只能在读者的头脑和思维中进行。 有没有可能&#xff0c;读者可以随时随地和…

QGIS开发笔记(二):Windows安装版二次开发环境搭建(上):安装OSGeo4W运行依赖其Qt的基础环境Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/139136356 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

OSPF多区域组网实验(华为)

思科设备参考&#xff1a;OSPF多区域组网实验&#xff08;思科&#xff09; 技术简介 OSPF多区域功能通过划分网络为多个逻辑区域来提高网络的可扩展性和管理性能。每个区域内部运行独立的SPF计算&#xff0c;而区域之间通过区域边界路由器进行路由信息交换。这种划分策略适用…

【机器学习-23】关联规则(Apriori)算法:介绍、应用与实现

在现代数据分析中&#xff0c;经常需要从大规模数据集中挖掘有用的信息。关联规则挖掘是一种强大的技术&#xff0c;可以揭示数据中的隐藏关系和规律。本文将介绍如何使用Python进行关联规则挖掘&#xff0c;以帮助您发现数据中的有趣模式。 一、引言 1. 简要介绍关联规则学习…

如何利用OpenHarmony ArkUI的Canvas组件实现涂鸦功能?

简介 ArkUI是一套UI开发框架&#xff0c;提供了开发者进行应用UI开发时所需具备的能力。随着OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;不断更新迭代&#xff0c;ArkUI也提供了很多新的组件&#xff0c;例如Canvas、OffscreenCanvas、XComponent组…