QML 对象 var 属性 是来自 cpp 的 null QVariant(QJSValue, )

QML object var property is null QVariant(QJSValue, ) from cpp

我正在使用 Qt5.5(来自 archlinux x86_64 repos 的 5.5.1-3)并想从 cpp 读取 qml 对象 属性,还没有运气:

qml部分:

import QtQuick 2.2

Item {
    signal doSomething()
    signal myDataChanged()
    property string myString: ""
    property var myObject: ({})
    onDoSomething(): {
        myString = "myStringValue"
        myObject = {"foo":"bar"}    
        myDataChanged()
    }
}

cpp部分:

void MyClass::processChangedData() {
    qDebug()<<sender()->property("myString");
    qDebug()<<sender()->property("myObject");
}

myDataChanged() 信号连接到 MyClass::processChangedData()

输出:

QVariant(QString, "myString")
QVariant(QJSValue, )

你能帮帮我吗?我想从cpp部分获取qml对象属性的数据。

听起来你应该可以做到:

auto js = sender()->property("myObject").value<QJSValue>();
qDebug() << js.property("foo").toString();

并使用QJSValue中的其他方法。