Если я сделаю следующий main.cpp
файл
int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
qmlRegisterType<MyQQuickItem>("MyQQuickItem", 1, 0, "MyQQuickItem");
QQuickView view;
MyObject* obj = new MyObject();
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.rootContext()->setContextProperty("SpecialObject", obj);
view.setSource(QUrl("qrc:/main.qml"));
view.show();
return app.exec();
}
Тогда я могу получить доступ к таким свойствам SpecialObject
, как в моем main.qml
:
import QtQuick 2.0
import OpenGlMaterialQQuickItem 1.0
Item {
width: 100
height: 100
MyQQuickItem {
width: 10
height: 10
someProperty: SpecialObject.anotherProperty
}
}
Но как я могу получить доступ к SpecialObject
из реализации C ++ MyQQuickItem
? Я знаю, что MyQQuickItem
находится внутри QQuickView
, у которого есть свойство rootContext()
, которое можно назвать так: contextProperty("SpecialObject")
. Но как добраться от MyQQuickItem
до QQuickView
? Или есть лучший способ?