【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.mzph.cn/pingmian/16319.shtml

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

相关文章

部署PIM-SM

拓扑图 配置 使能组播路由 配置OSPF 组播路由器接口配置pim-sm 连接组成员的接口使能igmp pim路由器上配置静态RP sysname AR1 # multicast routing-enable # interface GigabitEthernet0/0/0ip address 10.1.12.1 255.255.255.0 pim sm # interface GigabitEthernet0/0/…

flutter项目运行报错Exception: Gradle task assembleDebug failed with exit code 1各种报错合集

1.报错 Launching lib/main.dart on sdk gphone64 arm64 in debug mode... Running Gradle task assembleDebug... Exception in thread "main" java.net.ConnectException: Operation timed out at java.base/sun.nio.ch.Net.connect0(Native Method) at j…

云动态摘要 2024-05-26

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]大模型知识引擎体验招募 腾讯云 2024-05-21 大模型知识引擎产品全新上线&#xff0c;为回馈新老客户&#xff0c;50万token免费送&#xff0c;开通服务即领取&#xff01; 云服…

【学习心得】回归任务的评估指标决定系数R^2

一、决定系数是什么&#xff1f; scikit-learn库在进行回归任务的时候&#xff0c;进行模型评估时的score()方法&#xff0c;默认采取的是计算的是决定系数&#xff08;Coefficient of Determination&#xff09;&#xff0c;通常表示为得分。这个值衡量了模型预测值与实际观测…

【开源可视化报表设计器】借力实现高效率流程化办公!

进行数字化转型、实现流程化办公&#xff0c;这些应该是目前很多企业都想要实现的目标吧。那么&#xff0c;利用什么样的软件平台可以实现&#xff1f;低代码技术平台拥有可视化界面、灵活操作、好维护等众多优势特点&#xff0c;可以借助低代码技术平台、开源可视化报表设计器…

游戏缺失steam_api64.dll的修复方法,快速解决游戏启动问题

在现代科技发展的时代&#xff0c;电脑已经成为我们生活中不可或缺的一部分。然而&#xff0c;在使用电脑的过程中&#xff0c;我们经常会遇到一些常见的问题&#xff0c;其中之一就是找不到某个特定的动态链接库文件&#xff0c;比如steamapi64.dll。这个问题可能会导致某些应…

深度学习中的优化算法二(Pytorch 19)

一 梯度下降 尽管梯度下降&#xff08;gradient descent&#xff09;很少直接用于深度学习&#xff0c;但了解它是理解下一节 随机梯度下降算法 的关键。例如&#xff0c;由于学习率过大&#xff0c;优化问题可能会发散&#xff0c;这种现象早已在梯度下降中出现。同样地&…

民国漫画杂志《时代漫画》第25期.PDF

时代漫画25.PDF: https://url03.ctfile.com/f/1779803-1248635084-fd4794?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

03:PostgreSQL逻辑结构(表空间、数据库、模式、表、索引)

环境规划&#xff1a; 操作系统&#xff1a;CentOS 7.9 64bitPostgreSQL 版本&#xff1a;16.x 或 15.x安装用户&#xff1a;postgres软件安装目标路径&#xff1a;/usr/pgsql-<version>数据库数据目录&#xff1a;/pgdata 目录 表空间Tablespace 默认表空间 手动创建…

民国漫画杂志《时代漫画》第15期.PDF

时代漫画15.PDF: https://url03.ctfile.com/f/1779803-1247458444-8befd8?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;

【LeetCode:2769. 找出最大的可达成数字 + 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Nodejs(文件操作,构建服务器,express,npm)

文章目录 文件操作1.读取文件1&#xff09;步骤2&#xff09;范例 2.写文件1&#xff09;步骤2&#xff09;范例 3.删除文件4.重命名文件夹5删除文件夹 Url1.url.parse()2.url.fomat() Query1.query.parse()2.query.stringfy()3.编码和解码 第三方模块1.nodemailer2.body-parse…

BUUCTF-Misc24

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

部署ELK日志分析系统——超详细

ELK日志分析系统 文章目录 ELK日志分析系统资源列表基础环境一、环境准备二、部署Elasticsearch软件2.1、安装Elasticsearch软件2.2、加载系统服务2.3、更改Elasticsearch主配置文件2.4、创建数据存放路径并授权2.5、启动Elasticsearch2.6、查看节点信息 三、安装Elasticsearch…

【WEEK13】 【DAY5】Shiro第五部分【中文版】

2024.5.24 Friday 接上文【WEEK13】 【DAY4】Shiro第四部分【中文版】 目录 15.7.Shiro请求授权的实现15.7.1.修改ShiroConfig.java15.7.1.1.添加一行验证授权的代码15.7.1.2.重启 15.7.2.修改MyController.java15.7.3.修改ShiroConfig.java15.7.4.重启15.7.5.修改UserRealm.ja…

Jenkins 动态salve简单配置连接 EKS

安装Jenkins helm repo add jenkins https://charts.jenkins.io helm repo update # 当前版本 jenkins-5.1.18.tgz瘦身后的 values.yaml # grep -Ev ^\s*#|^$ values.yaml nameOverride: fullnameOverride: namespaceOverride: clusterZone: "cluster.local" kubern…

C#对文件进行批量重命名或者对某个单独的文件进行改名

目录 一、FolderBrowserDialog 二、OpenFileDialog 三、Path 四、ui设计 五、代码部分 一、FolderBrowserDialog FolderBrowserDialog是一个用于选择文件夹的对话框控件&#xff0c;可以在windows Forms应用程序中使用。使用它可以让用户选择一个文件夹&#xff0c;并返…

【编译原理复习笔记】中间语言

中间语言 中间语言的特点和作用 &#xff08;1&#xff09;独立于机器 &#xff08;2&#xff09;复杂性介于源语言和目标语言之间 中间语言可以使编译程序的结构在逻辑上更为简单明确 常用的中间语言 后缀式 图表示&#xff1a;抽象语法树&#xff0c;有向无环图 三地址代…

【软件设计师】先导

一、考试科目&#xff1a; 上午&#xff1a;计算机与软件工程知识&#xff0c;考试时间150min&#xff0c;75空单选题&#xff08;不一定一题一空&#xff09; 下午&#xff1a;软件设计&#xff0c;考试时间150分钟&#xff0c;问答题&#xff0c;6道只做5大题&#xff08;前四…