从C (例如Main.CPP)访问注册类型实例



我已经在main.cpp中注册了c 类(class_name)。

#include "class_header.hpp"
#include <QtQuick/QQuickView>
#include <QGuiApplication>
int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    qmlRegisterType<class_name>("ClassInstance", 1, 0, "ClassInstance");
    QQuickView view;
    view.setResizeMode(QQuickView::SizeRootObjectToView);
    view.setSource(QUrl("qml/main.qml"));
    view.show();
    return app.exec();
}

我已经确定注册此类会创建一个对象的实例,我只需要一个对象。QML侧可以访问此实例。例如,如何从C 端访问同一实例,例如,在上面显示的Main.cpp中?

预先感谢!

qmlregistertype不会创建实例。它使用QML引擎对类型类classinstance进行注册,以便您可以在QML中创建ClassInstance的实例。当您说可以在QML端访问此实例时,您实际上是在QML中创建一个新实例,并且无法从C 访问。

如果您的意图是创建一个可以从QML和C 访问的实例,那么您需要的是上下文属性。

ClassInstance obj;
view.rootContext()->setContextProperty("myInstance", &obj);

现在,您可以访问与QML中的MyInstance相同的实例,在C 代码中访问OBJ。文档此处。

相关内容

  • 没有找到相关文章

最新更新