简体   繁体   English

如何从 C++ 检索 QML 属性的值?

[英]How to retrieve the value of a QML property from C++?

I have the following QQuickItem defined in main.qml .我在QQuickItem定义了以下main.qml

Flickable {
  id: my_quick
  Accessible.name: "my_quick_item_name"
  objectName: "myquickitem"
  enabled: true

  property real quickProperty: 1.0
}

I get my_quick object in the following way on C++ side .我在C++ 端通过以下方式获得my_quick对象。

QQuickItem * my_quick_ptr = QmlEngine_Ptr->rootObjects()[0]->findChild<QQuickItem*>("myquickitem");

How can I get the current value of quickProperty set, into C++ side using my_quick_ptr ?如何使用my_quick_ptrquickProperty的当前值设置到 C++ 端?

If you mean QML properties, you can use this approach:如果你的意思是 QML 属性,你可以使用这种方法:

QQmlProperty::read(my_quick_ptr, "quickProperty").toReal()

Using QObject 's facilities should also work for QML properties:使用QObject的工具也应该适用于 QML 属性:

my_quick_ptr->property("quickProperty").toReal()

Also, findChild returns a QObject , so you will need to do a safe cast to get a derived pointer from it:此外, findChild返回一个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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM