Передавая глобальный объект с помощью QQuickView.rootContext (), как мне получить к нему доступ из QQuickItem? - PullRequest
0 голосов
/ 08 июля 2019

Если я сделаю следующий 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? Или есть лучший способ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...