qt QTreeWidgetItem详解
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::PartiallyChecked、Qt::Checked)。
- checkState:获取节点的选中状态。
- setFlags 和 flags:设置和获取节点的交互标志(如是否可选、是否可编辑等)。
3、重要信号
与 QTableWidgetItem 类似,QTreeWidgetItem 本身不直接发射信号。信号通常由 QTreeWidget 发射,以响应节点的更改或用户交互。以下是一些与 QTreeWidgetItem 相关的 QTreeWidget 信号:
- itemClicked:当用户点击树中的某个节点时发射。
- itemDoubleClicked:当用户双击树中的某个节点时发射。
- itemPressed:当用户按下鼠标按钮在树中的某个节点上时发射。
- itemReleased:当用户释放鼠标按钮在树中的某个节点上时发射。
- itemChanged:当树中的某个节点的内容发生变化时发射(注意:这通常要求节点是可编辑的,且内容实际发生了改变,但 QTreeWidget 默认不支持直接编辑节点,这可能需要自定义委托)。
- currentItemChanged:当当前选中的节点发生变化时发射。
- itemExpanded 和 itemCollapsed:当节点被展开或折叠时发射。
#include <QApplication>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QDebug>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建一个 QTreeWidget 实例
QTreeWidget treeWidget;
treeWidget.setColumnCount(1); // 设置列数
treeWidget.setHeaderLabels(QStringList() << "Tree Nodes"); // 设置表头
// 创建 QTreeWidgetItem 实例并设置文本
QTreeWidgetItem *rootItem = new QTreeWidgetItem(&treeWidget);
rootItem->setText(0, "Root Node");
// 创建子节点并添加到根节点
QTreeWidgetItem *childItem1 = new QTreeWidgetItem();
childItem1->setText(0, "Child Node 1");
rootItem->addChild(childItem1);
QTreeWidgetItem *childItem2 = new QTreeWidgetItem();
childItem2->setText(0, "Child Node 2");
rootItem->addChild(childItem2);
// 展开根节点
rootItem->setExpanded(true);
// 连接 itemClicked 信号到槽函数
QObject::connect(&treeWidget, &QTreeWidget::itemClicked, [&](QTreeWidgetItem *item, int column) {
qDebug() << "Clicked item:" << item->text(column);
});
// 显示 QTreeWidget
treeWidget.show();
return app.exec();
}
觉得有帮助的话,打赏一下呗。。
原文地址:https://blog.csdn.net/ckg3824278/article/details/143570276
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!