【Qt 学习笔记】Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍

文章编号:Qt 学习笔记 / 38

文章目录

  • Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍
    • 一、QTreeWidget介绍
      • 1. 简介
      • 2. 核心方法
      • 3. 核心信号
    • 二、QTreeWidgetItem介绍
      • 1. 简介
      • 2. 核心属性
      • 3. 核心方法
    • 三、QTreeWidget的使用(代码示例)


一、QTreeWidget介绍

1. 简介

QTreeWidget是Qt中的一个可视化控件,用于显示树形结构的数据。它是QTreeView的衍生类,提供了更直观易用的API来构建和管理树形结构。

QTreeWidget可用于显示和编辑树状结构的数据,每个节点可以包含一个或多个子节点。每个节点以一个图标和一个文本标签来标识,用户可以通过展开或折叠节点来显示或隐藏子节点。

在这里插入图片描述

2. 核心方法

方法说明
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 名称.

3. 核心信号

信号说明
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)元素被折叠时触发

二、QTreeWidgetItem介绍

1. 简介

QTreeWidgetItem是Qt框架中的一个类,用于在树形结构中表示节点。它可以用于创建树状的视图,比如树状菜单、文件浏览器等。

QTreeWidgetItem类提供了一些方法和属性,用于设置节点的文本、图标、状态等。每个节点都可以有子节点,通过添加子节点来构建树的层次结构。节点的层次关系可以通过父节点和子节点的指针来管理。

2. 核心属性

属性说明
text持有的文本
textAlignment文本对齐方式
icon持有的图表
font文本字体
hidden是否隐藏
disabled是否禁用
expand是否展开
sizeHint尺⼨大小
selected是否选中

3. 核心方法

方法说明
addChild(QTreeWidgetItem* child)新增子节点
childCount()子节点的个数
child(int index)获取指定下标的子节点. 返回 QTreeWidgetItem*
takeChild(int index)删除对应下标的子节点
removeChild(QTreeWidgetItem* child)删除对应的子节点
parent()获取该元素的父节点

三、QTreeWidget的使用(代码示例)

  1. 在界面TreeView,和三个按钮,以及一个输入框,如下图所示
    在这里插入图片描述
  2. 使用代码添加顶层元素
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//修改根节点名称ui->treeWidget->setHeaderLabel("饮品");//添加顶层元素QTreeWidgetItem * item = new QTreeWidgetItem();//设置顶层元素的名称item->setText(0,"碳酸饮料");//添加到顶层节点中ui->treeWidget->addTopLevelItem(item);//添加顶层元素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,"百事可乐");//添加到顶层节点下item->addChild(item4);//添加子节点QTreeWidgetItem * item5 = new QTreeWidgetItem();//设置元素名称item5->setText(0,"雪碧");//添加到顶层节点下item->addChild(item5);
}
  1. 编写按钮生成的槽函数
//添加到顶层元素 按钮
void Widget::on_pushButton_insertTopLevelItem_clicked()
{//获取到LineEdit输入框中的内容const QString& text = ui->lineEdit->text();//新增顶层节点QTreeWidgetItem * item = new QTreeWidgetItem();//设置顶层元素名称item -> setText(0,text);//添加到顶层节点中ui->treeWidget->addTopLevelItem(item);
}//添加到选中元素 按钮
void Widget::on_pushButton_insertItem_clicked()
{//获取到输入框内容const QString& text = ui->lineEdit->text();//获取当前选中的节点QTreeWidgetItem * current= ui->treeWidget->currentItem();if(current == nullptr){return;}//新增节点QTreeWidgetItem * item = new QTreeWidgetItem();//设置元素名称item -> setText(0,text);//添加到节点中current->addChild(item);
}//删除选中的元素 按钮
void Widget::on_pushButton_3_clicked()
{//获取当前选中的节点QTreeWidgetItem * current= ui->treeWidget->currentItem();if(current == nullptr){return;}//获取当前节点的父节点QTreeWidgetItem* parent = current->parent();if(parent ==nullptr){//顶层节点int index = ui->treeWidget->indexOfTopLevelItem(current);ui->treeWidget->takeTopLevelItem(index);}else{//非顶层节点parent->removeChild(current);}
}
  1. 运行结果,可以针对树形结构进行编辑添加内容和删除内容
    在这里插入图片描述

在这里插入图片描述

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

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

相关文章

python代码实现TF-IDF

1、TF-IDF解释 TF-IDF(Term frequency–inverse document frequency),中文翻译就是词频 - 逆文档频率,是一种用来计算关键词的传统方法。 TF(Term Frequency):TF 的意思就是词频,是…

SQL Server共享功能目录显示灰色无法自行选择

SQL Server共享功能目录显示灰色无法自行调整 一、 将之前安装SQL Server卸载干净 二、 清空注册表 1. 打开注册表,winR,输入regedit 2. 注册表-》编辑-》查找,输入C:\Program Files\Microsoft SQL Server\ 3. 注册表-》编辑-》查找&#x…

docker+nginx+Jenkins自动构建

文章目录 前言一、实操记录问下AI:jenkins 配置新增一个mobilegit配置Build TriggersBuild EnvironmentBuild StepsPost-build Actions 上面一顿配置下来,构建 -- FAILURE 总结 前言 在已有docker-Jenkins-nginx 部署方案上,在另外一台测试…

C++实现一个简单的控制cpu利用率的程序

写一个程序&#xff0c;让控制cpu利用率在20%左右 思路很简单&#xff1a;每个循环控制sleep的时间占比 #include <iostream> #include <chrono> #include <unistd.h>int main() {int ratio 20;int base_time 1000;int sleeptime base_time * (100-ratio…

【计算机网络篇】数据链路层(10)在物理层扩展以太网

文章目录 &#x1f354;扩展站点与集线器之间的距离&#x1f6f8;扩展共享式以太网的覆盖范围和站点数量 &#x1f354;扩展站点与集线器之间的距离 &#x1f6f8;扩展共享式以太网的覆盖范围和站点数量 以太网集线器一般具有8~32个接口&#xff0c;如果要连接的站点数量超过了…

10分钟入门pandas(一)

pandas 是基于python语言的数据分析处理库,使用广泛。本文主要参考pandas的官方入门指导,并结合自己入门使用的一些常用操作进行说明。 pandas通常和numpy结合使用,一般通过如下语句导入numpy和pandas库。 import numpy as np import pandas as pd一. pandas 数据结构 pan…

基于SSM的计算机课程实验管理系统的设计与实现(源码)

| 博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f44…

大屏分辨率适配插件v-scale-screen

前言&#xff1a;大屏分辨率适配繁多&#xff0c;目前我认为最简单且问题最少的的方案就是使用v-scale-screen插件&#xff0c;无需考虑单位转换&#xff0c;position定位也正常使用。 1. 效果 填充满屏幕的效果 保持宽高比的效果 2. 插件原理 原理是通过css transfom 实现…

macOS12安装 php8.1和apache

1. 安装php 8.1 macOS12不再自带php brew tap shivammathur/php 查看可安装版本 brew search php 安装指定版本 brew install php8.1 环境配置 vim ~/.zshrc export PATH"/usr/local/opt/php8.1/bin:$PATH" export PATH"/usr/local/opt/php8.1/sbin:$PAT…

[C#] 使用HttpClient请求https地址报错的解决方案

当使用HttpClient请求HTTPS地址遇到报错时&#xff0c;下面将解析并提供可能的解决方案供参考。 文章目录 异常代码无法定位错误的准确定位错误的 常见错误错误1错误2 解决问题生产环境开发环境 异常代码 首先&#xff0c;需要查看引发异常的代码部分, 无法定位错误的 以下代…

Android Compose 一:基础控件

Flutter 与 Compose 组件辣么像&#xff0c;难道是同一个google团队整的&#xff1b;也未深究&#xff0c;只是猜测。 创建项目 需要使用新版本Android studio&#xff0c;忽略步骤… 项目目录 MainActivity说明 1 系统默认页面 Preview 修饰的方法&#xff0c;只用来供开发…

撤销 git add 操作(忽略被追踪的文件)

文章目录 引言I git rm命令来取消暂存【推荐】II 撤销特定文件的暂存状态2.1 git rese2.2 git restoresee also引言 应用场景: 修改.gitignoregitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先…

精选多个炫酷的数据可视化大屏(含源码),拿走就用~

末尾有链接 演示地址&#xff1a;可视化大数据展示中心 (null.fit) 可视化大数据展示模板-科技语者 (chgskj.cn)

【Java】:方法重写、动态绑定和多态

目录 一个生动形象的例子 场景设定 1. 方法重写&#xff08;Method Overriding&#xff09; 2. 动态绑定&#xff08;Dynamic Binding&#xff09; 3. 多态&#xff08;Polymorphism&#xff09; 归纳关系&#xff1a; 重写 概念 条件 重写的示例 重载与重写的区别 …

libssh C++封装之七(File)

1 概述 libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C++封装。 libssh下载地址 3 实现 3.6 File File类型可以读写远程文件。 3.6.1 File定义 …

使用rsync+lnotify实现远程数据实时同步备份

目录 1、定时备份与实时备份区别 2、配置客户端 2.1、在客户端安装inotify-tools软件。以便提供inotifywait inotifywatch 辅助工具程序 2.2 验证&#xff1a;监控客户端/data_backup目录的变化 2.3 编写自动同步脚本 2.4 后台运行脚本 2.5 验证数据实时同步效果 1、定…

SpringCloud:服务拆分和远程调用

程序员老茶 &#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; P   S : 点赞是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#…

使用socat做端口转发

最近买的云上mongo数据库但是数据库不支持外网访问&#xff0c;准备做iptables转发但是一直不成功&#xff0c;腾讯云官方给予的解释是受服务器内启动的docker影响 做iptables转发会冲突&#xff0c;所以只能另想办法&#xff0c;我发现使用socat做转发也很好用&#xff0c;所以…

FPGA相关论文阅读

一、Achieving 100Gbps Intrusion Prevention on a Single Server 论文名称中文翻译&#xff1a;在单台服务器上实现100Gbps吞吐量的入侵防御检测。 文章中的Mixed-1和Norm-1 二、Distributed Password Hash Computation on Commodity Heterogeneous Programmable Platforms…

【回溯 字典树(前缀树)】212. 单词搜索 II

本文涉及知识点 回溯 字典树&#xff08;前缀树&#xff09; LeetCode212. 单词搜索 II 给定一个 m x n 二维字符网格 board 和一个单词&#xff08;字符串&#xff09;列表 words&#xff0c; 返回所有二维网格上的单词 。 单词必须按照字母顺序&#xff0c;通过 相邻的单元…