Qt实现含有兄弟节点解析json文件

本文介绍如何利用Qt库在C++中解析含有多个兄弟节点的JSON数据文件,详细阐述了关键步骤和注意事项,帮助开发者有效地处理复杂JSON结构。
摘要由CSDN通过智能技术生成
头文件:
```cpp
#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_PinnacleAPITool.h"

/// <summary>
/// API数据节点定义
/// </summary>
typedef struct ST_APINode
{
   
    QString name = QString("");             //名字
    QString description = QString("");      //描述
    ST_APINode* childNode = nullptr;        //子节点
    ST_APINode* nextBrotherNode = nullptr;  //兄弟节点
} APINode;

class QTreeWidgetItem;
class QListWidgetItem;
class PinnacleAPITool : public QMainWindow
{
   
    Q_OBJECT

public:
    PinnacleAPITool(QWidget* parent = Q_NULLPTR);

protected slots:
    void on_importBtn_clicked();    //导入文件
    void on_searchBtn_clicked();    //点击搜索

    /// <summary>
    /// listWidget中的item被点击了
    /// </summary>
    void SlotListWidgetItemClicked(QListWidgetItem* item);

    /// <summary>
    /// treeWidget中的item被点击了
    /// </summary>
    /// <param name="item"></param>=
    void SlotTreeWidgetItemSelected(QTreeWidgetItem* item, int column);

protected:
    /// <summary>
    /// 清空数据
    /// </summary>
    void ClearData();

    /// <summary>
    /// 清空所有的树节点
    /// </summary>
    void ClearTreeItems();

    /// <summary>
    /// 清空listWidget的所有节点
    /// </summary>
    void ClearListWidgetItems();

    /// <summary>
    /// 删除节点
    /// </summary>
    /// <param name="node">当前节点</param>
    void RemoveNode(APINode* node);

    /// <summary>
    /// 加载json数据
    /// </summary>
    /// <param name="fileName">文件全路径</param>
    /// <returns></returns>
    bool LoadJsonData(const QString& fileName);

    /// <summary>
    /// 增加子节点
    /// </summary>
    /// <param name="jsonObj">当前存储json信息的对象</param>
    /// <param name="node">当前节点</param>
    void AddChildNode(QJsonObject& jsonObj, APINode* node);

    /// <summary>
    /// 创建节点显示树
    /// </summary>
    void CreateTree();

    /// <summary>
    /// 创建树节点
    /// </summary>
    /// <param name="treeItem">树item</param>
    /// <param name="node">数据节点</param>
    void CreateTreeNode(QTreeWidgetItem* treeItem, APINode* node);

private:
    APINode* m_APIRootNode = nullptr;   //保存所有的数据节点
    std::vector<QTreeWidgetItem*> m_vecTreeitem;    //保存树上所有节点
    std::map<QTreeWidgetItem*, QString> m_mapTreeItemToDescription; //映射树节点与其对应的描述
    std::map<QListWidgetItem*, QTreeWidgetItem*> m_mapListItemToTreeItem; //将搜索列的item与其对应的树的item

private:
    Ui::PinnacleAPIToolClass ui;
};

cpp文件:

```cpp
在这里插入代码片
#include "PinnacleAPITool.h"
#include<QFileInfo>
#include<QFileDialog>
#include<QFile>
#include
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值