- 博客主页: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的使用(代码示例)
- 在界面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);}
}
- 运行结果,可以针对树形结构进行编辑添加内容和删除内容