#include "JsonTree.h"
#include<qfiledialog.h>
#include<qmessagebox.h>
#pragma execution_character_set("utf-8")
JsonTree::JsonTree(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pbt_open, &QPushButton::clicked, this, &JsonTree::on_open_clicked);
}
void JsonTree::paintEvent(QPaintEvent * event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::TextAntialiasing);
painter.translate(350, 50);
QRect rect(-25,0,50,50);
painter.drawRect(rect);
painter.drawText(rect, "总司令", QTextOption(Qt::AlignCenter));
drawJson(painter, obj);
}
void JsonTree::drawJson(QPainter & painter, QJsonObject & jsonObj)
{
QJsonObject::const_iterator it;
for (it = jsonObj.begin(); it != jsonObj.end(); ++it)
{
QJsonValue value = it.value();
if (!value.isObject()) {
if (value.isString())
qDebug("value : %s", qPrintable(value.toString()));
}
else {
drawJson(painter, value.toObject());
}
}
}
void JsonTree::on_open_clicked() {
QString fileName = QFileDialog::getOpenFileName(this,
"Open Image", "E:/QT creatro project/JsonTree/JsonTree", "( *.json)");
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly))
{
QMessageBox::information(this, "出错了", "打开文件错误");
return;
}
QJsonDocument doc = QJsonDocument::fromJson(file.readAll());
obj = doc.object();
update();
}
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_JsonTree.h"
#include<qpainter.h>
#include<qjsondocument.h>
#include<QJsonObject>
class JsonTree : public QMainWindow
{
Q_OBJECT
public:
JsonTree(QWidget *parent = Q_NULLPTR);
QJsonDocument doc;
protected:
void paintEvent(QPaintEvent *event);
void drawJson(QPainter& painter, QJsonObject & jsonObj);
private:
Ui::JsonTreeClass ui;
int intRect=100;
int midRect=100;
private slots:
void on_open_clicked();
private:
QJsonObject obj;
};