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

【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.lryc.cn/news/347237.html

相关文章:

  • 在Mars3d实现cesium的ImageryLayer自定义瓦片的层级与原点
  • logback日志持久化
  • 函数原型(Function Prototype)、函数定义(Function Definition)和函数声明(Function Declaration)
  • Go有无缓冲channel的区别
  • 【全开源】Fastflow工作流系统(源码搭建/上线/运营/售后/维护更新)
  • 超越传统游戏:生成式人工智能对游戏的变革性影响
  • SpringCloud微服务之Eureka、Ribbon、Nacos详解
  • 五角钱的程序员 | Kafka 是什么?
  • C++中合成的默认构造函数的访问权限
  • 【前端】桌面版docker并部署前端项目
  • 发布GPT-5的方式可能会与以往不同;开源vocode使用 AI 自动拨打电话;开源gpt智能对话客服工具;AI自动写提示词
  • Linux 作业管理 (bg, fg, jobs, kill)
  • springboot Redis 支持星号(*) 包括注解@Cache
  • 2023.5.12 第43周周报
  • JavaEE 多线程详细讲解(2)
  • Flask-HTTP请求、响应、上下文、进阶实验
  • springboot 设置response和request的默认格式 驼峰或者SNAKE_CASE
  • VR全景技术在养老院的应用优势浅析
  • [Spring Cloud] (6)gateway整体加解密
  • RUST编程语言入门基础2024
  • Linux进程控制——Linux进程终止
  • 利用IP地址查询解决被“薅羊毛”的方法
  • Tomcat7+ 弱口令 后台getshell漏洞
  • 香港虚拟主机哪里可以试用?用于企业建站的
  • C# 集合(四) —— Set类
  • C#实现多线程的几种方式
  • C语言—控制语句
  • 三. TensorRT基础入门-ONNX注册算子的方法
  • 01、什么是ip、协议、端口号知道吗?计算机网络通信的组成是什么?
  • 答题套路2 阅读理解 说明文某个词是否能去掉