2017-09-01 28 views
1

QQuickItemmain.qmlで定義されています。QMLプロパティの値をC++から取得する方法

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を使用してC++側に、quickPropertyセットの現在の値を得ることができますか?

答えて

3

あなたはQMLのプロパティを意味する場合は、このアプローチを使用することができます

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

もQMLのプロパティのために働く必要がありますQObjectの施設を使用する:

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

また、findChild戻りますa 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

ありがとうございます、私の質問では、サンプルコードであなたの答えをインラインで作ることができますか? objectNameを 'myquickitem'として' qreal'を使用しています。プロパティ名は 'quickProperty' –

+0

です。出来た。すばらしいです –

関連する問題