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

【Qt】多元素控件QTreeWidget

多元素控件QTreeWidget

使用QTreeWidget表示一个树型结构,里面的每一个元素都是QTreeWidgetItem,每个QTreeWidgetItem可以包含多个文本和图标,每个文本/图标表示一列。

可以给QTreeWidget设置顶层结构(顶层节点可以有多个),然后再给顶层节点添加字节点,从而构成树型结构。

QTreeWidget控件虽然是树型结构,但是这个树型结构没有体现出根节点,是从根节点的下一层字节点开始计算的。

  • QTreeWidget的核心方法
方法说明
clear
清空所有⼦节点
addTopLevelItem(QTreeWidgetItem* item)
新增顶层节点
topLevelItem(int index)
获取指定下标的顶层节点.
topLevelItemCount()
获取顶层节点个数
indexOfTopLevelItem(QTreeWidgetItem* item)
查询指定节点是顶层节点中的下标
takeTopLevelItem(int index)
删除指定的顶层节点. 返回 QTreeWidgetItem* 表⽰被删除 的元素
currentItem()
获取到当前选中的节点, 返回 QTreeWidgetItem*
setCurrentItem(QTreeWidgetItem* item)
选中指定节点
setExpanded(bool)
展开/关闭节点
setHeaderLabel(const QString& text)
设置 TreeWidget 的 header 名称
  • QTreeWidget的核心信号
信号说明
currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* old)
切换选中元素时触发
itemClicked(QTreeWidgetItem* item, int col)
点击元素时触发
itemDoubleClicked(QTreeWidgetItem* item, int col)
双击元素时触发
itemEntered(QTreeWidgetItem* item, int col)
⿏标进⼊时触发
itemExpanded(QTreeWidgetItem* item)
元素被展开时触发
itemCollapsend(QTreeWidgetItem* item)
元素被折叠时触发
  • QTreeWidgteItem的核心属性
属性说明
text
持有的⽂本
textAlignment
⽂本对⻬⽅式
icon
持有的图表
font
⽂本字体
hidden
是否隐藏
disabled
是否禁⽤
expand
是否展开
sizeHint
尺⼨⼤⼩
selected
是否选中
  • QTreeWidgetItem的核心方法
方法说明
addChild(QTreeWidgetItem* child)
新增⼦节点
childCount()
⼦节点的个数
child(int index)
获取指定下标的⼦节点. 返回 QTreeWidgetItem*
takeChild(int index)
删除对应下标的⼦节点
removeChild(QTreeWidgetItem* child)
删除对应的⼦节点
parent()
获取该元素的⽗节点

例子:使用QTreeWidget新增与删除元素

(1)在界面上创建一个TreeWidget,三个按钮,一个lineEdit

(2)初始化TreeWidget里的数据

(3)实现三个按钮的slot函数

(4)执行程序

(5)代码展示

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 设置根节点的名字ui->treeWidget->setHeaderLabel("动物");// 新增顶层节点QTreeWidgetItem* item1 = new QTreeWidgetItem();item1->setText(0, "猫");ui->treeWidget->addTopLevelItem(item1);QTreeWidgetItem* item2 = new QTreeWidgetItem();item2->setText(0, "狗");ui->treeWidget->addTopLevelItem(item2);QTreeWidgetItem* item3 = new QTreeWidgetItem();item3->setText(0, "鸟");ui->treeWidget->addTopLevelItem(item3);// 添加字节点QTreeWidgetItem* item4 = new QTreeWidgetItem();item4->setText(0, "中华田园猫");item1->addChild(item4);QTreeWidgetItem* item5 = new QTreeWidgetItem();item5->setText(0, "加菲猫");item1->addChild(item5);QTreeWidgetItem* item6 = new QTreeWidgetItem();item6->setText(0, "布偶猫");item1->addChild(item6);}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_insertTop_clicked()
{// 获取编辑框里的文本const QString& text = ui->lineEdit->text();if(text.isEmpty()) return;// 将该文本设置成顶层元素QTreeWidgetItem* item = new QTreeWidgetItem();item->setText(0, text);ui->treeWidget->addTopLevelItem(item);
}void Widget::on_pushButton_insert_clicked()
{// 获取编辑框里的文本const QString& text = ui->lineEdit->text();if(text.isEmpty()) return;// 获取treeWidget选中的元素QTreeWidgetItem* currentItem = ui->treeWidget->currentItem();if(currentItem == nullptr) return;// 将文本设置成选中的子节点QTreeWidgetItem* item = new QTreeWidgetItem();item->setText(0 ,text);currentItem->addChild(item);
}void Widget::on_pushButton_delete_clicked()
{// 获取treeWidget选中的元素QTreeWidgetItem* currentItem = ui->treeWidget->currentItem();if(currentItem == nullptr) return;// 获取当前选中节点的父节点QTreeWidgetItem* parentItem = currentItem->parent();if(parentItem == nullptr){// 顶层元素int index = ui->treeWidget->indexOfTopLevelItem(currentItem);ui->treeWidget->takeTopLevelItem(index);}else{// 普通元素parentItem->removeChild(currentItem);}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【ShuQiHere】用类来实现LSTM:让你的模型拥有更强的记忆力
  • 区块链知识体系fisco-bcos实战
  • Nature同款富集分析结果条形图叠加基因
  • ros发布图像
  • nacos配置持久化到Mysql数据库
  • Gartner发布2024年应用安全成熟度曲线:26项应用安全最新技术发展及应用状况和趋势
  • 深入解析Python的Pandas库:数据分析的利器(二)
  • 解决STM32使用J-Link可以擦除和读取但是无法烧录问题
  • Linux文件编程(进阶)
  • 每日刷一刷力扣SQL(八)
  • 综合评价 | 基于层次-熵权-变异系数-正态云组合法的综合评价模型(Matlab)
  • java 使用 aws s3 sdk 通过分段下载来实现 html 页面 video 的断点播放、拖动进度播放
  • 小程序面试题一
  • 【SAM下游任务微调】TS-SAM: Fine-Tuning Segment-Anything Model for Downstream Tasks
  • DDoS攻击的应对策略
  • 网络传输文件的问题
  • 【面试系列】之二:关于js原型
  • AWS实战 - 利用IAM对S3做访问控制
  • js
  • 半理解系列--Promise的进化史
  • 高度不固定时垂直居中
  • 诡异!React stopPropagation失灵
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 模型微调
  • 深度学习中的信息论知识详解
  • 算法-图和图算法
  • 微信支付JSAPI,实测!终极方案
  • 项目管理碎碎念系列之一:干系人管理
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • #1015 : KMP算法
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .Net core 6.0 升8.0
  • .NET Core 发展历程和版本迭代
  • .NET MVC第三章、三种传值方式
  • .NET6实现破解Modbus poll点表配置文件
  • .Net--CLS,CTS,CLI,BCL,FCL
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET命令行(CLI)常用命令
  • .Net中ListT 泛型转成DataTable、DataSet
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • @AliasFor 使用
  • @Transaction注解失效的几种场景(附有示例代码)