QT QML + C++ MVVM



据我所知,在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 {
...
}

最新更新