当前位置: 首页 > news >正文

Qt C++ 显示多级结构体,包括结构体名、变量名和值

文章目录

      • mainwindow.h
      • mainwindow.cpp
      • structures.h
      • main.cpp


QTreeView 和 QStandardItemModel 来实现。以下是实现这一功能的步骤和示例代码:

定义多级结构体:
假设你有一个多级结构体,如下所示:

struct SubStruct {int subValue1;QString subValue2;
};struct MainStruct {int mainValue1;QString mainValue2;SubStruct subStruct;
};

以下是完整的示例代码:

mainwindow.h

// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QStandardItemModel>
#include <QTreeView>#include "structures.h" // 假设结构体定义在这个头文件中class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:QTreeView *treeView;QStandardItemModel *model;void populateTree(const MainStruct &mainStruct, QStandardItem *parentItem);
};

mainwindow.cpp

#endif // MAINWINDOW_H
// mainwindow.cpp
#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{treeView = new QTreeView(this);setCentralWidget(treeView);model = new QStandardItemModel(this);treeView->setModel(model);MainStruct mainStruct;mainStruct.mainValue1 = 10;mainStruct.mainValue2 = "Main Value 2";mainStruct.subStruct.subValue1 = 20;mainStruct.subStruct.subValue2 = "Sub Value 2";QStandardItem *rootItem = model->invisibleRootItem();populateTree(mainStruct, rootItem);
}MainWindow::~MainWindow()
{
}void MainWindow::populateTree(const MainStruct &mainStruct, QStandardItem *parentItem)
{QStandardItem *mainStructItem = new QStandardItem("MainStruct");parentItem->appendRow(mainStructItem);QStandardItem *mainValue1Item = new QStandardItem("mainValue1");mainValue1Item->appendRow(new QStandardItem(QString::number(mainStruct.mainValue1)));mainStructItem->appendRow(mainValue1Item);QStandardItem *mainValue2Item = new QStandardItem("mainValue2");mainValue2Item->appendRow(new QStandardItem(mainStruct.mainValue2));mainStructItem->appendRow(mainValue2Item);QStandardItem *subStructItem = new QStandardItem("SubStruct");mainStructItem->appendRow(subStructItem);QStandardItem *subValue1Item = new QStandardItem("subValue1");subValue1Item->appendRow(new QStandardItem(QString::number(mainStruct.subStruct.subValue1)));subStructItem->appendRow(subValue1Item);QStandardItem *subValue2Item = new QStandardItem("subValue2");subValue2Item->appendRow(new QStandardItem(mainStruct.subStruct.subValue2));subStructItem->appendRow(subValue2Item);
}

structures.h

// structures.h
#ifndef STRUCTURES_H
#define STRUCTURES_H#include <QString>struct SubStruct {int subValue1;QString subValue2;
};struct MainStruct {int mainValue1;QString mainValue2;SubStruct subStruct;
};#endif // STRUCTURES_H

main.cpp

// main.cpp
#include <QApplication>
#include "mainwindow.h"int main(int argc, char *argv[])
{QApplication app(argc, argv);MainWindow window;window.show();return app.exec();
}

http://www.mrgr.cn/news/79633.html

相关文章:

  • TEA系列例题
  • 如何高效的向AI大模型提问? - 提示工程Prompt Engineering
  • 【考前预习】1.计算机网络概述
  • 深度学习实验十四 循环神经网络(1)——测试简单循环网络的记忆能力和梯度爆炸实验
  • 深入了解架构中常见的4种缓存模式及其实现
  • 在VMWare上安装openEuler 22.03-LTS
  • Mysql索引原理及优化——岁月云实战笔记
  • 嵌入式开发 - 工具记录
  • 【mysql】数据库存量数据双主实现
  • 北京大学《操作系统原理》课堂笔记(一)
  • LLM - 多模态大模型的开源评估工具 VLMEvalKit 部署与测试 教程
  • leetcode-54.螺旋矩阵-day1
  • Adobe Premiere Pro 2024 [24.6.1]
  • 2022 年“泰迪杯”数据分析技能赛A 题竞赛作品的自动评判
  • MySQL-DML之数据表操作
  • 递归算法题(1)
  • C++小小复习一下
  • SpringBoot3整合MyBatis
  • 2020 年“泰迪杯”数据分析职业技能大赛A 题教育平台的线上课程智能推荐策略
  • NanoLog起步笔记-4-Server端的两个线程