qt — Могу ли я получить доступ из C ++ к QQmlContext, в котором содержится QtObject?

У меня есть вспомогательный объект sorta-singleton, который, однако, я не хочу быть на самом деле одиночным, потому что я предпочитаю помещать вещи в стек / кучу. Поэтому я создал его в куче и установил его как 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)

Но это означает, что я всегда должен забивать свои экземпляры MyQObjectSubclass QML с помощью шаблона «cp: _cp».

1

Решение

Я просто нашел способ:

QQmlEngine::contextForObject(myQObject)

Еще не пробовал.

Эквивалентное:

#include <QtQml>

// ...

qmlContext(myQObject);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]