2017-09-01 169 views
1

我在main.qml中定义了以下QQuickItem如何从C++中检索QML属性的值

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

    property real quickProperty: 1.0 
} 

我得到my_quick对象在C++侧以下方式。

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

如何可以得到quickProperty集的当前价值,使用到my_quick_ptr C++的一面呢?

回答

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 
+0

谢谢,你能否让你的答案与我的问题中的示例代码内联?我正在使用'object'作为'myquickitem'的'qreal',并且属性名称是'quickProperty' –

+0

是的。有效。大 –