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中的其他方法。
我正在使用 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中的其他方法。