![](/img/trans.png)
[英]Using QQmlContext::setContextObject to make a C++ object visible to QML
[英]Can I access, from C++, the QQmlContext in which a QtObject is contained?
我有一個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實例。
我剛剛找到了一條路:
QQmlEngine::contextForObject(myQObject)
尚未嘗試過。
等價的:
#include <QtQml>
// ...
qmlContext(myQObject);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.