我可以从C++访问包含QtObject的QQmlContext吗?



我有一个sorta-singleton帮助程序对象,但是,我不想成为一个真正的singleton,因为我更喜欢把东西放在堆栈/堆上。所以我在堆上创建了它,并将其设置为我的根 QQmlContext 的上下文属性。我在C++中还有一个 QObject 子类,它在 QQmlContext 的对象树中实例化。

我是否可以从C++访问包含 QObject 的 QQmlContext 以访问有问题的上下文属性?

我知道我可以做这样的事情:

// in main.cpp
engine.rootContext()->setContextProperty("_cp", cp);
// in foo.qml
MyQObjectSubclass {
    cp: _cp
}
// in myqobjectsubclass.h:
// (macro from http://syncor.blogspot.bg/2014/11/qt-auto-property.html)
AUTO_PROPERTY(MyQObjectSubclass*, cp)

但这意味着我必须始终使用"cp:_cp"样板堵塞我的MyQObjectSubclass QML实例。

我刚刚找到了一种方法:

QQmlEngine::contextForObject(myQObject)

还没试过。

等效地:

#include <QtQml>
// ...
qmlContext(myQObject);

相关内容

  • 没有找到相关文章

最新更新