需求:QTreeView 自定义树结构,将数据转为json并保存成文本
{
"project": [
{
"children": [
{
"children": [
{
"children": [
],
"name": "新建项目111"
}
],
"name": "新建项目11"
},
{
"children": [
{
"children": [
],
"name": "新建项目111"
}
],
"name": "新建项目11"
}
],
"name": "新建项目1"
},
{
"children": [
{
"children": [
],
"name": "新建项目22"
}
],
"name": "新建项目2"
},
{
"children": [
{
"children": [
],
"name": "新建项目33"
}
],
"name": "新建项目3"
}
]
}
#ifndef TREEVIEWEDIT_H
#define TREEVIEWEDIT_H
#include <QWidget>
#include <QStandardItemModel>
#include <QJsonDocument>
#include <QJsonObject>
#include <QMessageBox>
#include <QJsonArray>
#include <QByteArray>
namespace Ui {
class TreeViewEdit;
}
class TreeViewEdit : public QWidget
{
Q_OBJECT
public:
explicit TreeViewEdit(QWidget *parent = nullptr);
~TreeViewEdit();
void getNode();
void getItem(QStandardItem *item);
QString exportTreeToJson(QStandardItemModel *model);
QJsonObject exportTreeNodeToJson(QStandardItem *item);
void importTreeFromJson(QStandardItemModel *model, const QString &json);
void createTreeNode(QStandardItemModel *model, const QJsonObject &node, QStandardItem *parentItem);
void wirteFile(QString json);
void readFile(QString &json);
private slots:
void on_pushButton_add_clicked();
void on_pushButton_sub_clicked();
void on_pushButton_delete_clicked();
void on_pushButton_save_clicked();
void on_pushButton_clicked();
private:
Ui::TreeViewEdit *ui;
QStandardItemModel*m_model;
QStandardItem * m_parentitem;
};
#endif // TREEVIEWEDIT_H