我可以从 C++ 访问包含 QtObject 的 QQmlContext 吗?
Can I access, from C++, the QQmlContext in which a QtObject is contained?
我有一个类似单例的辅助对象,但是,我不想成为一个真正的单例,因为我更喜欢把东西放在 stack/heap 上。所以我在堆上创建它并将它设置为我的根 QQmlContext 的 contextProperty。我还有一个 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);
我有一个类似单例的辅助对象,但是,我不想成为一个真正的单例,因为我更喜欢把东西放在 stack/heap 上。所以我在堆上创建它并将它设置为我的根 QQmlContext 的 contextProperty。我还有一个 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);