qt中实现树型结构,每个节点下有不同的表格显示
阅读数:102 评论数:0
跳转到新版页面分类
C/C++
正文
一、概述
可以通过 QTreeWidget
或 QTreeView
结合 QTableWidget
或 QTableView
来实现。
二、使用QTreeWidget实现
1、基本思路
(1)创建树型控件QTreeWidget,用来管理树形结构
(2)树中的每个节点都是QTreeWidgetItem
(3)每个节点下的表格由QTabelWidget控件来实现
(4)使用setItemWidget将表格与树形节点关联,使得每个节点下都可以显示表格
#include <QApplication>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QTableWidget>
#include <QVBoxLayout>
#include <QWidget>
class TreeWidgetWithTables : public QWidget
{
public:
TreeWidgetWithTables(QWidget *parent = nullptr) : QWidget(parent)
{
QVBoxLayout *layout = new QVBoxLayout(this);
// 创建树形控件
QTreeWidget *treeWidget = new QTreeWidget(this);
treeWidget->setColumnCount(1); // 只需要一列来显示节点名称
treeWidget->setHeaderLabel("Nodes");
// 添加第一个节点和表格
QTreeWidgetItem *node1 = new QTreeWidgetItem(treeWidget);
node1->setText(0, "Node 1");
QTableWidget *table1 = new QTableWidget(3, 2, this);
table1->setHorizontalHeaderLabels(QStringList() << "Column 1" << "Column 2");
table1->setItem(0, 0, new QTableWidgetItem("Item 1-1"));
table1->setItem(0, 1, new QTableWidgetItem("Item 1-2"));
table1->setItem(1, 0, new QTableWidgetItem("Item 1-3"));
table1->setItem(1, 1, new QTableWidgetItem("Item 1-4"));
QTreeWidgetItem *tableItem1 = new QTreeWidgetItem(node1);
treeWidget->setItemWidget(tableItem1, 0, table1);
// 添加第二个节点和表格
QTreeWidgetItem *node2 = new QTreeWidgetItem(treeWidget);
node2->setText(0, "Node 2");
QTableWidget *table2 = new QTableWidget(2, 2, this);
table2->setHorizontalHeaderLabels(QStringList() << "Column A" << "Column B");
table2->setItem(0, 0, new QTableWidgetItem("Item 2-1"));
table2->setItem(0, 1, new QTableWidgetItem("Item 2-2"));
table2->setItem(1, 0, new QTableWidgetItem("Item 2-3"));
table2->setItem(1, 1, new QTableWidgetItem("Item 2-4"));
QTreeWidgetItem *tableItem2 = new QTreeWidgetItem(node2);
treeWidget->setItemWidget(tableItem2, 0, table2);
// 添加树形控件到布局中
layout->addWidget(treeWidget);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TreeWidgetWithTables window;
window.setWindowTitle("Tree with Tables");
window.resize(400, 300);
window.show();
return a.exec();
}
相关推荐
一、概述
QTreeWidget 是 Qt 框架中的一个控件,用于以树形结构展示数据。它是 QTreeView 的一个高级版本,提供了一个基于项目(item-based)的接口来管理和显示层次数据。使