【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. 运行结果,可以针对树形结构进行编辑添加内容和删除内容
    在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

stable diffusion WebUi本地安装

一、stable diffusion 介绍 Stable Diffusion是一种先进的文本到图像的生成模型,它可以根据给定的文本输入生成高度逼真的图像。 Stable Diffusion模型因其高效性和灵活性,在AI图像生成领域引起了广泛关注,并在实际应用中展示了其强大的能力…

MySQL性能优化:MySQL中的隐式转换造成的索引失效

目录 前言数据准备SQL测试分析和总结 前言 数据库优化是一个任重而道远的任务,想要做优化必须深入理解数据库的各种特性。在开发过程中我们经常会遇到一些原因很简单但造成的后果却很严重的疑难杂症,这类问题往往还不容易定位,排查费时费力最…

2024年第九届数维杯大学生数学建模挑战赛B 题思路1.0版本

B题:生物质和煤共热解问题的研究 数维杯分享资料(问题一代码论文思路)链接(18点更新): 链接:https://pan.baidu.com/s/1GSv9dkqcY6G-XUnd0sJe_A 提取码:sxjm 题目分析&#xff1…

基于LLM的自行车道CAD

LLM(大型语言模型)是强大的工具。对于许多人来说,用语言表达愿望通常比浏览复杂的 GUI 更简单。 1、系统简介和环境搭建 urb-x.ch,这是一家专门从事自行车道建设的公司。轨道采用模块化构建块进行独特设计,可以通过多…

有什么实用的还原试卷的app免费?6个软件教你快速进行还原试卷

有什么实用的还原试卷的app免费?6个软件教你快速进行还原试卷 在现代化的教学环境中,使用数字化工具进行试卷还原变得愈发重要。以下是六个实用的、免费的应用程序,它们为还原试卷提供了便捷的解决方案。 FunAI: 这款应用程序可…

QT作业5

1、聊天室 服务器端 //头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QList> #include <QListWidget> #include <QMessageBox> #include <QDebug> #includ…

软件验收计划书-验收规程(Word原件)

编写软件验收计划是软件开发过程中的一个关键步骤&#xff0c;其重要性体现在以下几个方面&#xff1a; 明确验收标准&#xff1a;软件验收计划详细列出了验收的标准、测试方法、测试环境等&#xff0c;确保所有相关人员对验收的期望和要求有清晰的认识。这有助于避免在验收阶段…

Electron+Vue+pyinstaller服务打包

electron环境安装略 1. electron的入口文件配置test.js, 需要在package.json 配置文件中指定main: src/test.js const { app, BrowserWindow } require(electron)const createWindow () > {const win new BrowserWindow({width: 800,height: 600})// win.loadFile(inde…

机器学习面试篇

如何理解机器学习数据集的概念 数据集是机器学习的基础&#xff0c;它包括了用于训练和测试模型所需的数据。数据集通常以矩阵的形式存在&#xff0c;其中每一行代表一个样本&#xff08;或实例&#xff09;&#xff0c;每一列代表一个特征&#xff08;或属性&#xff09;。…

浅谈C++ overload(重载) override(覆盖) overwrite(重写)

目录 1. 名词辨析2 含义解析1 overload重载2 override覆盖3 overwrite重写 3 区别4 代码示例 1. 名词辨析 关于这3个名词的中文翻译&#xff1a; overload翻译为重载&#xff0c;基本是没有歧义的&#xff1b;override和overwrite的翻译&#xff0c;我在参考了cppreference中…

文物藏品库房管理:守护珍贵文化遗产的宝库

一、引言 文物是人类文化遗产的珍贵财富&#xff0c;为了保护和传承科学有效的文物藏品库房管理是必不可少的。本文将介绍文物藏品库房管理的重要性&#xff0c;以及一些常用的管理方法和技术&#xff0c;提高文物保护工作的效果和水平以确保文物的安全与完整性。 二、文物藏品…

语音网关有哪些?

语音网关是一种网络设备&#xff0c;它使得通过传统的电话网络&#xff08;如公共交换电话网络&#xff0c;PSTN&#xff09;和现代的数据网络&#xff08;如互联网或私有数据网络&#xff09;进行的语音通信成为可能。语音网关的主要作用是在模拟或数字电话信号与数据网络的数…

C++ | Leetcode C++题解之第67题二进制求和

题目&#xff1a; 题解&#xff1a; class Solution { public:string addBinary(string a, string b) {string ans;reverse(a.begin(), a.end());reverse(b.begin(), b.end());int n max(a.size(), b.size()), carry 0;for (size_t i 0; i < n; i) {carry i < a.siz…

出海企业哪种组网方案更省事?

对于出海企业而言&#xff0c;建立跨地区的数据传输和协同工作至关重要&#xff0c;以提升运营效率。因此&#xff0c;网络构建变得迫在眉睫。通过构建企业组网&#xff0c;企业能够加强与海外分支、客户和合作伙伴之间的联系&#xff0c;加速海外业务的发展。 然而&#xff0c…

机器学习:基于K-近邻(KNN)、高斯贝叶斯(GaussianNB)、SVC、随机森林(RF)、梯度提升树(GBDT)预测葡萄酒质量

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

mac内存不足怎么清理?有哪些免费的软件工具?

当你的mac电脑使用一段时间之后&#xff0c;你可能就会发现&#xff0c;原本非常流畅的运行开始出现卡顿的现象&#xff0c;此时正是mac内存不足的外在表现。可mac内存不足怎么清理呢&#xff0c;别急&#xff0c;清理内存的方式方法有很多&#xff0c;小编将结合实际情况给大家…

字节跳动测试开发岗 3+1 面经+经验分享(收到offer,入职月薪27K)

现在&#xff0c;招聘黄金时间已经过了&#xff0c;在网上看了很多大佬的面经&#xff0c;也加了很多交流群&#xff0c;受到了很多朋友的提点&#xff0c;今天终于轮到我来分享面经啦&#xff0c;之前面试了几家公司&#xff0c;最后在八月初拿到了字节跳动测试岗的 offer&…

sql-labs(11-20)

1.less-11 1.判断类型 根据测试在使用 " 不会报错&#xff0c; 会报错&#xff0c;所以他是字符型的并且被单引号闭合&#xff0c;而且只有用户 登陆成功才会显示数据。所以先尝试报错注入 2.爆数据库 and updatexml(2,concat(0x7e,(select database()),0x7e),2)-- 3.爆数…

谷歌上架攻略:个人号20人连续14天封闭测试的详细流程及相关注意事项

众所周知&#xff0c;近年来&#xff0c;Google play为了确保应用质量和用户体验&#xff0c;对开发者提出不少新要求。其中&#xff0c;对于个人开发者的一项要求是&#xff0c;自2023年11月13日起&#xff0c;新注册的个人开发者账号在上架正式版应用前&#xff0c;必须经过2…

面试题:数组指针的创建和访问,取地址符号的使用//定义一个指向含有10个整型的数组的指针,如何通过这个指针访问数组?

下面哪个代码是错误的&#xff1f;&#xff08;&#xff09; #include <stdio.h> int main() {int* p NULL;int arr[10] { 0 };return 0; }A. p arr; B. int(*ptr)[10] &arr; C. p &arr[0]; D. p &arr; 上题答案选D&#xff0c;通过如下代…