据我所知,在QT QML中不可能在QML组件中实例化c++类,除非它是QQuickItem。我不想把所有的ViewModels放在ViewEngine上下文中,因为这是一个非常糟糕的做法,在内存中创建所有的类,而不使用。
我的问题是:如何从单个QML组件实例化一个c++ ViewModel/Services/API,而不使用ViewEngine Context。ViewModels必须是QQuickItem类型吗?
c++对象不需要是QQuickItems,它们需要是QObjects。您只需要向QQmlEngine注册您的类,如下所示:
qmlRegisterType<MyObject>("my.component.library", 1, 0, "MyObject");
然后在你的qml文件中,你可以像这样实例化这个类:
import my.component.library 1.0
MyObject {
...
}