У меня есть своего рода одноэлементный вспомогательный объект, который, однако, я не хочу быть на самом деле одноэлементным, потому что я предпочитаю помещать вещи в стек/кучу. Поэтому я создал его в куче и установил как contextProperty моего корневого QQmlContext. У меня также есть подкласс QObject на C++, экземпляр которого создается в дереве объектов QQmlContext.
Могу ли я получить доступ из C++ к QQmlContext, в котором содержится QObject, чтобы получить доступ к рассматриваемому 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)
Но это означает, что я всегда должен засорять свои экземпляры QML MyQObjectSubclass шаблоном «cp: _cp».