如何分配单例类型的 QmlListProperty

how to assign QmlListProperty of singleton type

我已将 MyType 注册为 qmlRegisterSingletonType<MyType>("org.examples", 1, 0, "MyType"),其中 QmlListProperty<MyListElement> - myList。 我应该在 QML 端使用什么语法来为 MyType.myList 赋值?

好像不对:

Component.onCompleted: {
  MyType.myList = [
    MyListElement {
    }
  ]
}

您必须使用 javascript 创建 MyListElement 对象,然后使用推送将其添加到列表中,因为 QmlListProperty 已转换为 QML 中的列表。

在本例中使用 Qt.createQmlObject(),因此假设 MyListElement 是使用以下方法创建的:

qmlRegisterType<MyListElement>("org.examples", 1, 0, "MyListElement");

所以解决方案是:

Component.onCompleted: {
    var o = Qt.createQmlObject('import org.examples 1.0; MyListElement {}', this)
    // o.foo_property = foo_value;
    MyType.myList.push(o);
}