QML中动态创建ListModel内ListElement提示属性不存在如何解决
问题原因
ListElement是QML为ListModel静态定义设计的语法糖,只有作为ListModel的直接静态子元素时,QML解析器才会特殊处理其内部自定义的键值对,将其识别为模型的字段。使用Qt.createQmlObject动态创建ListElement实例时,没有ListModel静态解析的上下文,引擎会把url、time当做ListElement的原生属性查找,自然就会报属性不存在的错误。
解决方案
不需要手动创建ListElement实例,直接调用ListModel原生的增删改方法即可,方法接收普通JavaScript对象作为参数,内部会自动处理为对应的模型条目:
1. 末尾追加单个元素
sList.append({ url: "Res/ex1.jpg", time: 10 })
2. 指定位置插入元素
// 索引从0开始,以下代码表示插入到第2个位置 sList.insert(1, { url: "Res/ex3.jpg", time: 15 })
3. 批量添加元素
如果需要一次性添加多个元素,直接传入对象数组即可:
sList.append([ {url: "Res/ex4.jpg", time: 5}, {url: "Res/ex5.jpg", time: 20} ])
内容的提问来源于stack exchange,提问作者Findus
相关产品推荐
相关产品推荐

