3

カスタムプロパティを使用してQObjectを定義し、このオブジェクトをQML環境で公開することは可能です。しかし、このように、新しいプロパティごとに、C++コードを再コンパイルする必要があります。

C ++ / QtからQMLオブジェクトへの動的バインディングを作成することは可能ですか?何かのようなもの:

//C++ code: 
updateProperty("myQmlObject.any_property", "Hello World");

ありがとうございました!

解決済み:

_view->rootContext()->setContextProperty( "cppmessage" , "Hello from C++" );

WHERE:viewはQDeclarativeViewであり、cppmessageは「text:cppmessage」のような事前の宣言なしでQMLで使用されます

このリンクは、解決策を見つけるのに役立ちました:http: //xizhizhu.blogspot.com/2010/10/hybrid-application-using-qml-and-qt-c.html

4

1 に答える 1

2

はい、できます。リンク

// MyItem.qml
import QtQuick 1.0

Item {
    property int someNumber: 100
}

//C++
QDeclarativeEngine engine;
QDeclarativeComponent component(&engine, "MyItem.qml");
QObject *object = component.create();

qDebug() << "Property value:" << QDeclarativeProperty::read(object,"someNumber").toInt();
QDeclarativeProperty::write(object, "someNumber", 5000);

qDebug() << "Property value:" << object->property("someNumber").toInt();
object->setProperty("someNumber", 100);

編集:1 @Valentin によって提案されている別の方法は、ここにリストされています

于 2011-05-17T16:20:09.800 に答える