【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);}
}

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

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

相关文章

redis面试(二十二)读锁释放

假设现在已经有各种锁的重入什么的,那如何释放锁? 读锁读锁 假如说,同一个线程多次加读锁,或者不同的线程加了多个读锁 当前的锁结构长这样 anyLock: { “mode”: “read”, “UUID_01:threadId_01”: 2, “UUID_02:threadId_02…

去雾去雨算法

简单版 import cv2 import numpy as npdef dehaze(image):"""简单去雾算法,使用直方图均衡化来增强图像"""# 将图像转换为YUV颜色空间yuv_image cv2.cvtColor(image, cv2.COLOR_BGR2YUV)# 对Y通道(亮度)进行…

数据结构——队的基本操作

一、顺序队 队的用法:先进先出 跟平时我们遇到的大多情况一样,队的主要思想就是先进先出,比如我去食堂打饭,我先排那么就是我先打到饭咯 顺序队:其实说白了就是一块空间用两个指针去指向,为了实现先进先…

C语言指针重学

学习要纲:建议掌握 gdb调试(b ,d ,fin ,bt ,print ,awatch ,up ,down ,set pretty等) SourceInsight软件看代码(全局搜索 文件搜索等) git如何调取分支合并(git branch,git blame,git log,git pull,git reset --hard等) 等内容,下面是对于指针的一个重新学习. C语言的指针&…

AI工具 GPT 学术优化 (GPT Academic) 安装实践

GPT 学术优化 (GPT Academic)是一个综合的AI GPT工具包,可以完成各种gpt辅助的工作,比如代码解读、翻译、读论文等功能。官网:GitHub - binary-husky/gpt_academic: 为GPT/GLM等LLM大语言模型提供实用化交互接口,特别优化论文阅读…

2024年中国运筹学会运筹竞赛(数据驱动赛道)报名通知

竞赛组织 主办单位:中国运筹学会(国家一级学会) 承办单位:中国科学技术大学 支持单位:杉数科技、海康威视、中国科学技术大学管理学院、《运筹学学报》杂志 竞赛内容 本次竞赛(本科生组)由竞…

BOSS直聘财报:2024年第二季度净利润4.17亿元,同比上涨34.8%

8月28日美股盘前,BOSS直聘(NASDAQ:BZ,HK:2076)发布了2024年第二季度财报。在第二季度,公司经营效率不断提升,非通用会计准则下,取得净利润4.17亿元,同比上涨34.8%。 第二季度,公司持…

实习结束总结20240828

长达两个月的实习终于在今天结束了,不知怎的,心如止水,没有高兴,没有伤心,毫无波澜的内心甚至让自己都感觉可怕,也许,这就是成长吧。 硬件上: 1.cadence需要继续深入学习&#xff…

深圳保障房、商品房、小产权房子类型对比

摘要: 整理了我认知以内的深圳房子类型,有安居房,可售人才房,共有产权房、配售型保障房、商品房、统建楼、农民房的区别。如果数据存疑,可以多方对比论证,我也主要靠百度。 我发现我很多同事是非深户&#…

JS WebSocket 深度解析

JS WebSocket 深度解析 文章目录 JavaScript WebSocket 深度解析一、WebSocket 是什么二、JS 中如何使用 WebSocket1. 创建 WebSocket 对象2. 连接打开事件3. 监听消息事件4. 监听错误事件5. 关闭连接 三、WebSocket 包含哪些属性或方法 API1. 属性2. 方法 四、扩展与高级技巧1…

结果一。5.be doing表将来和 表 will的区别

be doing 表⽰近期、眼下就要发⽣的事情; will 表⽰将来的时间,则较远⼀些。如: He is going to write a letter tonight.He will write a book 。 be going to 表⽰根据主观判断将来肯定发⽣的事情。 will+ 动词原形表⽰⼀般将来时。 will ࿰

【xilinx】米联客ZYNQ MZ7100自学发现JTAG烧写失败

3-2-01米联客 2022 版 ZYNQ SOC SDK 入门篇 02 程序固化入门(SDK 方式) 生成了boot.bin 2.4.2 程序通过jtag烧不进去卡在performing erase operation 最终发现是spi的flash type 模式设置错误,文档和板卡没对应上 文档写的qspi-x4-single 实际用的qspi-x8-dual_par…

16:9横屏短视频素材库有哪些?横屏短视频素材网站分享

在当今这个视觉为王的时代,16:9横屏视频凭借其宽阔的画面和卓越的观看体验,已经成为许多视频创作者和营销专家的首选格式。如果你想制作出引人注目的横屏视频,选择高质量的视频素材库是关键。无论你是视频制作的老手还是刚入行的新手&#xf…

免费分享一套SpringBoot+Vue个人理财管理系统【论文+源码+SQL脚本】,帅呆了~~

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue个人理财管理系统,分享下哈。 项目视频演示 【免费】SpringbootVue个人理财管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着信息技术在管理上越来越深入而广泛的应用&am…

【图像去噪】论文复现:代替ReLU!Pytorch实现即插即用激活函数模块xUnit,并插入到DnCNN中实现xDnCNN!

请先看【专栏介绍文章】:【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中…

文章生成用这三款伪原创软件效果好

在当今信息爆炸的时代,无论是网站运营者、博主、作家还是学生,对文章的需求量越来越大。他们需要用大理的的原创文章来满足他们工作需求。然而,对于许多人来说,写作一篇优质的文章并非易事。这就产生了一种需求,那就是…

3 Python开发工具:VSCode+插件

本文是 Python 系列教程第 3 篇,完整系列请查看 Python 专栏。 Visual Studio Code的安装非常简单,就不放这里增加文章篇幅了。 相比PyCharm,VSCode更加轻量,启动速度快。并且搭配Python插件就能实现和Pycharm一样的代码提示、高…

如何将平淡无奇的产品推向市场?借助ChatGPT,仅需3秒即可化身短视频创意策划大师,助你的产品一夜成名!

毫无趣味的产品要如何宣传?用ChatGPT,3秒钟成为创意短视频策划高手,让你的产品出圈!© 由 ZAKER 提供 最近,全红婵最爱的小乌龟火了。 制作小乌龟的某位义乌商家在接受采访时,表示自己有了甜蜜的烦恼…

力扣刷题(2)

寻找两个正序数组的中位数 寻找两个正序数组的中位数-力扣 思路: 合并两个正序数组找中位数 double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {int arr[nums1Size nums2Size];int n1 0, n2 0;int m 0;int q;//合并两个正序数组w…

Git 远程操作

1. 理解分布式版本控制系统 我们所说的⼯作区,暂存区,版本库等,都是在本地!也就是在笔记本或计算机上。⽽我们的 Git 其实是分布式版本控制系统.可以简单理解为,我们每个⼈的电脑上都是⼀个完整的版本库,这…