Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍
一、QTreeWidget介绍
1. 简介
QTreeWidget是Qt中的一个可视化控件,用于显示树形结构的数据。它是QTreeView的衍生类,提供了更直观易用的API来构建和管理树形结构。
QTreeWidget可用于显示和编辑树状结构的数据,每个节点可以包含一个或多个子节点。每个节点以一个图标和一个文本标签来标识,用户可以通过展开或折叠节点来显示或隐藏子节点。
2. 核心方法
3. 核心信号
二、QTreeWidgetItem介绍
1. 简介
QTreeWidgetItem是Qt框架中的一个类,用于在树形结构中表示节点。它可以用于创建树状的视图,比如树状菜单、文件浏览器等。
QTreeWidgetItem类提供了一些方法和属性,用于设置节点的文本、图标、状态等。每个节点都可以有子节点,通过添加子节点来构建树的层次结构。节点的层次关系可以通过父节点和子节点的指针来管理。
2. 核心属性
3. 核心方法
三、QTreeWidget的使用(代码示例)
- 在界面TreeView,和三个按钮,以及一个输入框,如下图所示
- 使用代码添加顶层元素
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); }
- 编写按钮生成的槽函数
//添加到顶层元素 按钮 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); } }
4.运行结果,可以针对树形结构进行编辑添加内容和删除内容