qt QTreeWidgetItem详解

[复制链接]
发表于 2025-12-30 03:06:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1、概述

QTreeWidgetItem 是 Qt 框架中的一个类,专门用于在 QTreeWidget(一个基于项的树形视图)中体现单个节点(或称为项)。QTreeWidget 继续自 QAbstractItemView,而 QTreeWidgetItem 则作为树中的一个节点,可以包罗文本、图标、子节点等。通过 QTreeWidgetItem,用户可以轻松地管理树形布局中的数据,包罗添加、删除、睁开、折叠节点等。
2、告急方法

QTreeWidgetItem 提供了多种方法来使用树节点,以下是一些关键的方法:

  • setText:设置节点的文本内容。可以指定列索引来设置特定列的文本。
  • text:获取节点的文本内容。同样可以指定列索引。
  • setIcon:为节点设置图标。
  • icon:获取节点的图标。
  • addChild:向节点添加子节点。
  • insertChild:在指定位置插入子节点。
  • takeChild:移除并返回指定索引处的子节点。
  • removeChild:移除指定子节点(但不返回它)。
  • parent:获取节点的父节点。
  • child:获取指定索引处的子节点。
  • childCount:获取节点的子节点数目。
  • setExpanded:设置节点是否睁开。
  • isExpanded:查抄节点是否睁开。
  • setHidden:设置节点是否隐蔽。
  • isHidden:查抄节点是否隐蔽。
  • setData 和 data:为节点设置和获取自界说数据(通常使用 Qt::UserRole 或更高的罗列值作为键)。
  • setCheckState:如果 QTreeWidget 设置为支持复选框,则此方法可以设置节点的选中状态(Qt::Unchecked、Qt:artiallyChecked、Qt::Checked)。
  • checkState:获取节点的选中状态。
  • setFlags 和 flags:设置和获取节点的交互标记(如是否可选、是否可编辑等)。
3、告急信号

与 QTableWidgetItem 类似,QTreeWidgetItem 自己不直接发射信号。信号通常由 QTreeWidget 发射,以相应节点的更改或用户交互。以下是一些与 QTreeWidgetItem 相干的 QTreeWidget 信号:

  • itemClicked:当用户点击树中的某个节点时发射。
  • itemDoubleClicked:当用户双击树中的某个节点时发射。
  • itemPressed:当用户按下鼠标按钮在树中的某个节点上时发射。
  • itemReleased:当用户开释鼠标按钮在树中的某个节点上时发射。
  • itemChanged:当树中的某个节点的内容发生变革时发射(注意:这通常要求节点是可编辑的,且内容实际发生了改变,但 QTreeWidget 默认不支持直接编辑节点,这大概必要自界说委托)。
  • currentItemChanged:当当前选中的节点发生变革时发射。
  • itemExpanded 和 itemCollapsed:当节点被睁开或折叠时发射。
  1. #include <QApplication>  
  2. #include <QTreeWidget>  
  3. #include <QTreeWidgetItem>  
  4. #include <QDebug>  
  5.   
  6. int main(int argc, char *argv[]) {  
  7.     QApplication app(argc, argv);  
  8.   
  9.     // 创建一个 QTreeWidget 实例  
  10.     QTreeWidget treeWidget;  
  11.     treeWidget.setColumnCount(1); // 设置列数  
  12.     treeWidget.setHeaderLabels(QStringList() << "Tree Nodes"); // 设置表头  
  13.   
  14.     // 创建 QTreeWidgetItem 实例并设置文本  
  15.     QTreeWidgetItem *rootItem = new QTreeWidgetItem(&treeWidget);  
  16.     rootItem->setText(0, "Root Node");  
  17.   
  18.     // 创建子节点并添加到根节点  
  19.     QTreeWidgetItem *childItem1 = new QTreeWidgetItem();  
  20.     childItem1->setText(0, "Child Node 1");  
  21.     rootItem->addChild(childItem1);  
  22.   
  23.     QTreeWidgetItem *childItem2 = new QTreeWidgetItem();  
  24.     childItem2->setText(0, "Child Node 2");  
  25.     rootItem->addChild(childItem2);  
  26.   
  27.     // 展开根节点  
  28.     rootItem->setExpanded(true);  
  29.   
  30.     // 连接 itemClicked 信号到槽函数  
  31.     QObject::connect(&treeWidget, &QTreeWidget::itemClicked, [&](QTreeWidgetItem *item, int column) {  
  32.         qDebug() << "Clicked item:" << item->text(column);  
  33.     });  
  34.   
  35.     // 显示 QTreeWidget  
  36.     treeWidget.show();  
  37.   
  38.     return app.exec();  
  39. }
复制代码

以为有资助的话,打赏一下呗。。
           

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表