ManageTreeXml类封装QTreeWidget 树形节点信息

QDomDocument 运用说明

生成示例

<?xml version="1.0" encoding="UTF-8"?>
<sdk guid="##GUID">
 <in method="SetModbusParaInfo">
  <Device name="Device1">
   <mode updateCycUnit="ms" timeOutUnit="ms" resendTimes="3" timeOut="0" updateCyc="100" deviceId="1" value="2"/>
   <eth netmask="255.255.255.0" ip="192.168.90.245" port="10000"/>
   <serial serial="COM1" dataBits="8" baudRate="9600" parity="NONE" stopBit="1"/>
   <register offset="1" func="0" name="Para0" dataFormat="0"/>
   <register offset="1" func="0" name="Para1" dataFormat="0"/>
  </Device>
 </in>
</sdk>

头文件

#ifndef MANAGETREEXML_H
#define MANAGETREEXML_H
#include <QTreeWidget>
#include <QDomDocument>

typedef struct RegisterPara {
    RegisterPara() {
        func_ = "0";
        offset_ = "1";
        dataFormat_ = "0";
    }

    QString func_;
    QString offset_;
    QString dataFormat_;
}RegisterPara;
Q_DECLARE_METATYPE(RegisterPara)

typedef struct DevicePara {
    DevicePara() {
        mode_ = "0";
        deviceId_ = "1";
        updateCyc_ = "100";
        updateCycUnit_ = "ms";
        timeOut_ = "0";
        timeOutUnit_ = "ms";
        resendTimes_ = "3";
        serial_ = "COM1";
        baudRate_ = "9600";
        dataBits_ = "8";
        stopBit_ = "1";
        parity_ = "NONE";
        ipAddress_ = "192.168.90.245";
        netmask_ = "255.255.255.0";
        port_ = "10000";
    }

    QString mode_;
    QString deviceId_;
    QString updateCyc_;
    QString updateCycUnit_;
    QString timeOut_;
    QString timeOutUnit_;
    QString resendTimes_;
    QString serial_;
    QString baudRate_;
    QString dataBits_;
    QString stopBit_;
    QString parity_;
    QString ipAddress_;
    QString netmask_;
    QString port_;
    QHash<QString, RegisterPara*> registerPara_;
}DevicePara;
Q_DECLARE_METATYPE(DevicePara)

enum ItemType {
    DeviceEnum = QTreeWidgetItem::UserType,
    RegisterEnum
};

class ManageTreeXml
{
public:
    ManageTreeXml();
    bool SaveTreeXml(QTreeWidget* pTree, QString xmlPath);
    bool LoadTreeXml(QTreeWidget* pTree, QString xmlPath);

private:
    bool showXml(QTreeWidget* pTree, QDomDocument *pDoc, bool bEditable);
    bool showXmlTreeNode(QTreeWidget* pTree, QDomNode domParent, QTreeWidgetItem *treeParent, bool bEditable);
    void setTreeNodeText(QDomNode Node, QTreeWidgetItem *treeNode, DevicePara* devicePara);
    void SaveItem(QDomElement& root,QTreeWidgetItem* item,QDomDocument& doc);
};

#endif // MANAGETREEXML_H

源文件

#include "manageTreexml.h"
#include <QStack>
#include <QFile>
#include <QDebug>

ManageTreeXml::ManageTreeXml()
{
   

}

bool ManageTreeXml::SaveTreeXml(QTreeWidget *pTree, QString xmlPath)
{
   
    QDomDocument doc;
    QDomProcessingInstruction head = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
    doc.appendChild(head);
    //invisibleRootItem()函数并不是得到我们想要的这个顶层节点,它得到的是所有节点的最终根节点,因此,得到顶层节点需要自己写操作,下面是根据任意一个节点获取其可见顶层节点的代码
    QTreeWidgetItem *rootItem = pTree->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C葭葭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值