在 QML 中动态创建组件(ListModel 中的 ListElement)

Posted

技术标签:

【中文标题】在 QML 中动态创建组件(ListModel 中的 ListElement)【英文标题】:Create component dynmically in QML (ListElement in ListModel) 【发布时间】:2021-10-24 03:05:59 【问题描述】:

我想动态创建 QML-ListModel 的成员。静态创建没问题,工作正常:

 ListModel
            id: sList 

            ListElement
                url: "Res/ex1.jpg"
                time: 10
            

            ListElement
                url: "Res/ex2.jpg"
                time: 10
            
        

我选择 QML 函数 Qt.createQmlObject,sList 在启动时已经创建:

Qt.createQmlObject("import QtQuick 2.5; ListElementurl: \"Res/ex1.jpg\"; time: 10; ", sList, "dynamicItem");

我终于报错了:

file:///C:[...]TEP46Py6_2/main.qml:156: Error: Qt.createQmlObject(): failed to create object: 
file:///C:[...]TEP46Py6_2/dynamicItem:1:53: Cannot assign to non-existent property "time"

是的,ListElement 没有原生属性 time(还有 url),但 ListElement 通常没有原生属性。有人可以给我一个建议吗?谢谢。

【问题讨论】:

【参考方案1】:

你只需要使用append函数:

sList.append("url": "Res/ex1.jpg", "time": 10)

【讨论】:

以上是关于在 QML 中动态创建组件(ListModel 中的 ListElement)的主要内容,如果未能解决你的问题,请参考以下文章

QML程序实现动态切换多语言(ListModel/ListElement中的文本的多语言处理)

QML程序实现动态切换多语言(ListModel/ListElement中的文本的多语言处理)

ListModel 包含委托的数据属性

如何在 QML 中访问 ListView 的 ListModel 的 ListElement 的映射委托数据?

如何在 qml 中没有 listmodel 的情况下存储嵌套 ListView 的数据并在之后检索

使用QML LocalStorage来存储我们的数据