ListModel
会产生意外且非常破碎的结果:
property ListModel model : ListModel {}
Component.onCompleted: {
var a = [1, 2, 3, 4, 5]
console.log(a)
model.append({"a" : a})
console.log(model.get(model.count - 1))
console.log(model.get(model.count - 1).a)
输出是:
qml: [1,2,3,4,5]
qml: QObject(0x3cccd58)
qml: QQmlListModel(0x3cd0978)
但是,如果数组连接成一个字符串,它将按预期工作:
console.log(a)
a = a.join(",")
model.append({"a" : a})
console.log(model.get(model.count - 1))
console.log(model.get(model.count - 1).a)
qml: [1,2,3,4,5]
qml: QObject(0x3d5da60)
qml: 1,2,3,4,5
一些观察 - 似乎数组以某种方式“转换”为QQmlListModel
,它是另一个列表模型实例,而不是被附加到的实例。此外,最初我虽然这可能确实是一些自动转换,并且期望列表模型包含五个数字,确实count
为5,但get(0)
返回undefined
。因此,虽然大小与数组的大小相匹配,但没有任何有效的内容。
我很确定这是一个错误,但不过我会在提交错误报告之前询问是否有人知道发生了什么。
答案 0 :(得分:0)
ListModel是ListElement定义[...]
的简单容器
如果您转到documentation of ListElement
:
值必须是简单常量;字符串(引用并且可选地在对QT_TR_NOOP的调用中),布尔值(true,false),数字或枚举值(例如AlignText.AlignHCenter)。