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()    获取该元素的父节点

 

使用代码添加顶层元素

   //设置根节点名称
   ui.treeWidget->setHeaderLabel(codec->toUnicode("饮品"));

//添加顶层元素 QTreeWidgetItem* item = new QTreeWidgetItem(); //设置顶层元素的名称 item->setText(0, GetString("碳酸饮料")); //添加到顶层节点中 ui.treeWidget->addTopLevelItem(item); //添加顶层元素 QTreeWidgetItem* item2 = new QTreeWidgetItem(); //设置顶层元素的名称 item2->setText(0, GetString("奶茶")); //添加到顶层节点中 ui.treeWidget->addTopLevelItem(item2); //添加顶层元素 QTreeWidgetItem* item3 = new QTreeWidgetItem(); //设置顶层元素的名称 item3->setText(0, GetString("果汁")); //添加到顶层节点中 ui.treeWidget->addTopLevelItem(item3); //添加子节点 QTreeWidgetItem* item4 = new QTreeWidgetItem(); //设置元素名称 item4->setText(0, GetString("百事可乐")); //添加到顶层节点下 item->addChild(item4); //添加子节点 QTreeWidgetItem* item5 = new QTreeWidgetItem(); //设置元素名称 item5->setText(0, GetString("雪碧")); //添加到顶层节点下 item->addChild(item5);

删除节点

//获取当前选中的节点
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);
}

展开所有

   ui.treeWidget->expandAll();

折叠所有

 ui.treeWidget->collapseAll();

添加顶层元素

 //获取输入框的内容
 const QString& text = ui.lineEdit->text();
 //新增顶层节点
 QTreeWidgetItem* item = new QTreeWidgetItem();
 ///设置顶层元素名称
 item->setText(0, text);
 //设置顶层元素名称
 ui.treeWidget->addTopLevelItem(item);

添加到选中元素

//获取输入框的内容
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);

 双击节点获取节点名称

  //双击事件绑定
  connect(ui.treeWidget, &QTreeWidget::itemDoubleClicked, this, &QtWidgetsApplication2::itemDoubleClicked_QTree);

/// <summary>
/// 双击事件
/// </summary>
/// <param name="item"></param>
/// <param name="column"></param>

void QtWidgetsApplication2::itemDoubleClicked_QTree(QTreeWidgetItem* item, int column)
{
    QString str = item->text(0);//获取节点的名称
    QMessageBox::information(this,"213", str);
}

   //清除所有节点

 //清除所有节点
 ui.treeWidget->clear();

 

posted @ 2025-11-18 18:30  家煜宝宝  阅读(20)  评论(0)    收藏  举报