1、概述
QTreeWidget 是 Qt 框架中的一个类,用于以树形结构展示数据。它基于 QTreeView 并提供了更高级别的接口,使得添加、删除和管理树形结构中的项变得更加简单。QTreeWidget 支持多级嵌套,每个项(QTreeWidgetItem)都可以有子项,从而形成复杂的树状结构。QTreeWidget 还提供了丰富的功能,如拖放操作、项的选择、编辑和展开/折叠等。
2、重要方法
QTreeWidget 提供了一系列方法来管理和操作树形结构中的数据,以下是一些重要的方法:
- addTopLevelItem:向树中添加顶级项。
- insertTopLevelItem:在指定位置插入顶级项。
- addChildItem 和 insertChildItem:向现有项添加或插入子项。
- takeTopLevelItem 和 takeChildItem:移除顶级项或子项。
- clear:清除树中的所有项。
- expandAll 和 collapseAll:展开或折叠树中的所有项。
- expandItem 和 collapseItem:展开或折叠指定的项。
- setItemText:设置项的文本。
- setItemIcon:设置项的图标。
- setItemData 和 itemData:设置和获取项的自定义数据。
- sortItems:对项进行排序。
3、重要信号
QTreeWidget 发射多种信号来响应用户的操作和数据的变更,以下是一些重要的信号:
- itemClicked:单击某个项时发射此信号。
- itemDoubleClicked:双击某个项时发射此信号。
- itemPressed:按下鼠标按钮在某个项上时发射此信号。
- itemReleased:释放鼠标按钮在某个项上时发射此信号。
- itemChanged:项的某些属性(如文本或图标)发生变化时发射此信号。
- itemExpanded 和 itemCollapsed:当项被展开或折叠时发射这些信号。
- itemSelectionChanged:选择发生变化时发射此信号。
- currentItemChanged:当前项发生变化时发射此信号。
#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.setHeaderLabel("Tree Items"); // 设置表头标签 // 创建顶级项 QTreeWidgetItem *rootItem1 = new QTreeWidgetItem(&treeWidget); rootItem1->setText(0, "Root Item 1"); // 创建子项 QTreeWidgetItem *childItem1 = new QTreeWidgetItem(rootItem1); childItem1->setText(0, "Child Item 1.1"); QTreeWidgetItem *childItem2 = new QTreeWidgetItem(rootItem1); childItem2->setText(0, "Child Item 1.2"); // 创建另一个顶级项及其子项 QTreeWidgetItem *rootItem2 = new QTreeWidgetItem(&treeWidget); rootItem2->setText(0, "Root Item 2"); QTreeWidgetItem *childItem3 = new QTreeWidgetItem(rootItem2); childItem3->setText(0, "Child Item 2.1"); // 展开所有项 treeWidget.expandAll(); // 连接 itemClicked 信号到槽函数 QObject::connect(&treeWidget, &QTreeWidget::itemClicked, [&](QTreeWidgetItem *item, int column) { qDebug() << "Clicked item:" << item->text(column); }); // 显示 QTreeWidget treeWidget.show(); return app.exec();
}
觉得有帮助的话,打赏一下呗。。