在 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中的文本的多语言处理)
如何在 QML 中访问 ListView 的 ListModel 的 ListElement 的映射委托数据?