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在 QML 中使用,没有事先声明,例如:“text: cppmessage”

此链接对于找到解决方案很有用: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 回答