1 c++功能函数:
QJsonArray classA::getJsonArray()
{
QJsonArray array;
QJsonObject json1;
json1.insert("name", "Bill Smith");
json1.insert("number", "555 3264");
array.append(json1);
QJsonObject json2;
json2.insert("name", "John Brown");
json2.insert("number", "555 8426");
array.append(json2);
QJsonObject json3;
json3.insert("name", "Sam Wise");
json3.insert("number", "555 0473");
array.append(json3);
return array;
}
2 qml中进行解析
var temp=classa.getJsonArray()
for(var i=0;i<temp.length;i++)
model.append(temp[i])
完整代码:
//classa.h
#ifndef CLASSA_H
#define CLASSA_H
#include <QObject>
#include <QJsonArray>
#include <QJsonObject>
class classA : public QObject
{
Q_OBJECT
public:
explicit classA(QObject *parent = nullptr);
signals:
public slots:
QJsonArray getJsonArray();
};
#endif // CLASSA_H
//classa.cpp
#include "classa.h"
classA::classA(QObject *parent) : QObject(parent)
{
}
QJsonArray classA::getJsonArray()
{
QJsonArray array;
QJsonObject json1;
json1.insert("name", "Bill Smith");
json1.insert("number", "555 3264");
array.append(json1);
QJsonObject json2;
json2.insert("name", "John Brown");
json2.insert("number", "555 8426");
array.append(json2);
QJsonObject json3;
json3.insert("name", "Sam Wise");
json3.insert("number", "555 0473");
array.append(json3);
return array;
}
//main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include "classa.h"
int main(int argc, char *argv[])
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QGuiApplication app(argc, argv);
/*
* MyClassA: qml中import的包名
* 1: 主版本号
* 0: 次版本号
* ClassA: qml中使用的对象名
*/
qmlRegisterType<classA>("MyClassA", 1, 0, "ClassA");
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
//main.qml
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import MyClassA 1.0
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
ClassA
{
id:classa
}
ListModel
{
id:model
}
ListView
{
id:listview
width: 180;
height: 200
model: model
delegate: Text {
text: name + ": " + number
}
}
Button
{
x:200
text: "改变model内容"
onClicked:
{
var temp=classa.getJsonArray()
for(var i=0;i<temp.length;i++)
model.append(temp[i])
}
}
}