如何从 C++ 中检索 QML 属性 的值?
How to retrieve the value of a QML property from C++?
我在 main.qml
中定义了以下 QQuickItem
。
Flickable {
id: my_quick
Accessible.name: "my_quick_item_name"
objectName: "myquickitem"
enabled: true
property real quickProperty: 1.0
}
我在 C++ 端 .
通过以下方式获得 my_quick
对象
QQuickItem * my_quick_ptr = QmlEngine_Ptr->rootObjects()[0]->findChild<QQuickItem*>("myquickitem");
我如何 使用 my_quick_ptr
将 quickProperty
集的当前值输入到 C++ 端?
如果你指的是 QML 属性,你可以使用这种方法:
QQmlProperty::read(my_quick_ptr, "quickProperty").toReal()
使用 QObject
的工具也应该适用于 QML 属性:
my_quick_ptr->property("quickProperty").toReal()
此外,findChild
returns 一个 QObject
,因此您需要进行安全转换才能从中获取派生指针:
QQuickItem * my_quick_ptr = qobject_cast<QQuickItem *>(QmlEngine_Ptr->rootObjects()[0]->findChild<QQuickItem*>("myquickitem"));
if (my_quick_ptr) // successfully found and cast, can be safely used
我在 main.qml
中定义了以下 QQuickItem
。
Flickable {
id: my_quick
Accessible.name: "my_quick_item_name"
objectName: "myquickitem"
enabled: true
property real quickProperty: 1.0
}
我在 C++ 端 .
通过以下方式获得my_quick
对象
QQuickItem * my_quick_ptr = QmlEngine_Ptr->rootObjects()[0]->findChild<QQuickItem*>("myquickitem");
我如何 使用 my_quick_ptr
将 quickProperty
集的当前值输入到 C++ 端?
如果你指的是 QML 属性,你可以使用这种方法:
QQmlProperty::read(my_quick_ptr, "quickProperty").toReal()
使用 QObject
的工具也应该适用于 QML 属性:
my_quick_ptr->property("quickProperty").toReal()
此外,findChild
returns 一个 QObject
,因此您需要进行安全转换才能从中获取派生指针:
QQuickItem * my_quick_ptr = qobject_cast<QQuickItem *>(QmlEngine_Ptr->rootObjects()[0]->findChild<QQuickItem*>("myquickitem"));
if (my_quick_ptr) // successfully found and cast, can be safely used