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

时间:2017-06-21 15:33:18

标签: c++ qt qml qtquick2 qqmlcontext

我有一个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实例。样板。

1 个答案:

答案 0 :(得分:0)

我刚刚找到了一条路:

QQmlEngine::contextForObject(myQObject)

尚未尝试过。

等效地:

#include <QtQml>

// ...

qmlContext(myQObject);