我有一个sorta-singleton帮助对象,但是,我不想成为一个单身人士,因为我更喜欢把东西放在堆栈/堆上。所以我在堆上创建它并将其设置为我的根QQmlContext的contextProperty。我在C ++中也有一个QObject子类,它在QQmlContext的对象树中实例化。
我可以从C ++访问包含QObject的QQmlContext ,以获取有问题的contextProperty吗?
我知道我可以这样做:
// 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实例。样板。
答案 0 :(得分:0)
我刚刚找到了一条路:
QQmlEngine::contextForObject(myQObject)
尚未尝试过。
等效地:
#include <QtQml>
// ...
qmlContext(myQObject);