YAT YAML + C++ MVVM

QT QML + C++ MVVM

据我所知,在 QT QML 中不可能在 QML 组件中实例化 C++ class,除非它是 QQuickItem。 我不想将所有 ViewModel 都放在 ViewEngine 上下文中,因为这是一个非常糟糕的做法,在不使用的情况下在内存中创建所有 classes。

我的问题是:如何在不使用 ViewEngine 上下文的情况下从单个 QML 组件实例化 C++ ViewModel 或 Services/API。 ViewModel 必须是 QQuickItem 类型吗?

C++ 对象不需要是 QQuickItems,它们需要是 QObjects。你只需要 register 你的 class 与 QQmlEngine,像这样:

qmlRegisterType<MyObject>("my.component.library", 1, 0, "MyObject");

然后在您的 qml 文件中,您可以像这样实例化 class:

import my.component.library 1.0

MyObject {
    ...
}