概述
QJsonObject转为QString,发送带此QString的信号,QML中接收到信号后直接用JSON进行解析(QML支持Javascript,自然也支持相应的json解析)。同理,可以在QML中将javascript对象先转换成json字符串,然后传给C++进行解析。这种方法可以用来传输比较复杂的数组参数,之前都是用的QVariantList和QVariantMap,感觉好不方便,所以在这里记录一下。
QFile loadFile("./test.txt");
if(!loadFile.open(QIODevice::ReadOnly))
{
qDebug()<<"Could't open json data file!";
}
QByteArray allData = loadFile.readAll();
loadFile.close();
QJsonParseError json_error;
QJsonDocument jsonDoc(QJsonDocument::fromJson(allData, &json_error));
if(json_error.error != QJsonParseError::NoError)
{
qDebug() << "Parse json error!";
return;
}
callQmlLoadCali (QString(allData));//将Json格式标定数据以QString的形式传给QML界面,这里的callQmlLoadCali是一个带QString参数的信号,这里为了方便直接用了读取的数据,如果是QJsonObject的话也可先转成QJsonDocument,再转成QString
//其他操作
Connections{
target:testTarget
onCallQmlLoadCali:{
var rootObject = JSON.parse(jsonString);//可以直接解析的
console.log(rootObject.Points[0].x);
}
}
json文件格式:
{
"Points": [
{
"x": 0.3,
"y": 0.3
}
]
}
最后
以上就是外向手机为你收集整理的C++和QML之间传输JSON字符串并解析(适用于传数组或其他复杂参数)的全部内容,希望文章能够帮你解决C++和QML之间传输JSON字符串并解析(适用于传数组或其他复杂参数)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复