我已经在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。文档此处。