通过QQuickView.rootContext()传递全局对象,如何从QQuickItem访问它?

时间:2019-07-08 03:24:35

标签: c++ qt

如果我执行以下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?我知道MyQQuickItemQQuickView属性的rootContext()内部,可以这样命名:contextProperty("SpecialObject")。但是如何从MyQQuickItem到其QQuickView?还是有更好的方法?

0 个答案:

没有答案