gpt4 book ai didi

qt4 - 在没有 Q_PROPERTY 定义的情况下从 C++ 访问 QML 对象的属性

转载 作者:行者123 更新时间:2023-12-04 14:34:13 24 4
gpt4 key购买 nike

我知道,可以定义一个具有自定义属性的 QObject 并在 QML 环境中公开该对象。但这样一来,对于每个新属性,我都需要重新编译 C++ 代码。

是否有可能进行从 C++/Qt 到 QML 对象的动态绑定(bind)?像这样的东西:

//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

最佳答案

是的,这是可以做到的。 Link

// 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 建议的另一种方法 link

关于qt4 - 在没有 Q_PROPERTY 定义的情况下从 C++ 访问 QML 对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6033515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com