Qt4 从C+访问QML对象的属性+;withoun Q_属性定义
我知道,可以使用自定义属性定义QObject并在QML环境中公开该对象。但是这样,对于每个新的属性,我需要重新编译C++代码。 是否可以从C++/Qt到QML对象进行动态绑定? 比如:Qt4 从C+访问QML对象的属性+;withoun Q_属性定义,qt4,qml,qt-quick,Qt4,Qml,Qt Quick,我知道,可以使用自定义属性定义QObject并在QML环境中公开该对象。但是这样,对于每个新的属性,我需要重新编译C++代码。 是否可以从C++/Qt到QML对象进行动态绑定? 比如: //C++ code: updateProperty("myQmlObject.any_property", "Hello World"); 谢谢大家! 已解决: _view->rootContext()->setContextProperty( "cppmessage" , "Hello fro
//C++ code:
updateProperty("myQmlObject.any_property", "Hello World");
谢谢大家!
已解决:
_view->rootContext()->setContextProperty( "cppmessage" , "Hello from C++" );
其中:view是一个QDeclarativeView,cppmessage在QML中使用,没有事先声明,如:“text:cppmessage”
此链接可用于查找解决方案:是的,可以这样做
//MyItem.qml
导入QtQuick 1.0
项目{
属性int someNumber:100
}
//C++
QDEcrativeEngine发动机;
QDeclarativeComponent组件(&engine,“MyItem.qml”);
QObject*object=component.create();
谢谢你的回答。我发现,悬停似乎很简单:setContextProperty。无论如何谢谢你!我想这也是另一种方法,我会把它添加到答案中。
// 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);