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();

浙公网安备 33010602011771号