Procesamiento JSON entre C++ y QML

La comunicación entre C ++ y QML se logra registrando clases en QML. Al mismo tiempo, es muy conveniente usar json cuando ambas partes pasan estructuras o múltiples parámetros. A continuación se explica cómo entregarlo desde dos aspectos:

1. Pasar de C++ a QML

Primero defina una función de ranura pública en la clase C ++ registrada en QML, como QJsonObject getJsonValue (); el tipo específico de json devuelto depende de la situación específica.

QJsonObject InterfaceForQml::getJsonValue()
{     objeto QJsonObject;     object.insert("nombre","xiaoming");     object.insert("edad",48);     objeto de retorno; }




En QML podemos llamar para obtener el objeto json pasado.

            var tobjec = toQmlInfo.getJsonValue();
            console.log("objeto:",tobjec.name);
            console.log("edad del objeto:",tobjec.age);

2. Pasar de QML a C++

En QML

        var mytestJson = {};
        mytestJson.cmdId = 0;
        var listFileName = [];
        listFileName[0]="prueba1";
        listFileName[1]="prueba2";
        listFileName[2]="prueba3";
        mytestJson.fileName = listFileName;
        toQmlInfo.sendCmd(mytestJson);

en C++

void InterfaceForQml::sendCmd(QJsonObject cmd)
{

    qDebug()<<"cmd"<<cmd;
}
Clase C++ registrada en QML

InterfaceForQml *toQmlInfo = InterfaceForQml::getInstance();

motor.rootContext()->setContextProperty("toQmlInfo",toQmlInfo);

Supongo que te gusta

Origin blog.csdn.net/dreamliweiming/article/details/130962685
Recomendado
Clasificación