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

时间:2017-09-01 20:43:31

标签: qt qml qquickitem

我在QQuickItem中定义了以下main.qml

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");

如何可以使用quickPropertymy_quick_ptr设置的当前值设置到C ++端?

1 个答案:

答案 0 :(得分:3)

如果您指的是QML属性,则可以使用此方法:

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

使用QObject的设施也适用于QML属性:

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

此外,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