Qt中甲ListElement
必须有string
类型,bool
,numbers
或enum
的值。更多复杂的数据类型像hashmaps是不允许的。
你可以在Qt 5.2源代码中看到这个内容:qqmllistmodel.cpp。这从Qt 4.7 times以来没有改变。
列表元素的ListModel定义内定义的,并且表示在将使用的ListView或Repeater项被显示的 列表项。
列表元素像其他QML元素来定义,只是它们含有 的角色属性的定义,而不是一个集合。使用与属性定义相同的语法,角色都定义如何访问数据 并包含数据本身。
用于角色的名称必须以小写字母开头,对于给定模型中的所有元素应该是 。值必须是简单的常量;或者 字符串(引用并且可选地在对QT_TR_NOOP的调用中),布尔值 (true,false),数字或枚举值(例如AlignText.AlignHCenter)。
然而,ListModel
似乎是能够存储在ECMA-262标准定义的所有类型:原语类型,即Undefined
,Null
,Boolean
,Number
和String
以及所述Object
类型。
编辑:如果你想创建QML元素,你有你的代码改写为类似
ListModel {
ListElement {
text: "TextToAdd"
imageValue: "Qwer.png"
imageType: 1
position: 1
}
}
EDIT2:或者你去的JavaScript方式。首先创建一个空的模型,并填写在启动
ListView {
model: ListModel { id: qwe }
delegate: ...
Component.onCompleted: {
qwe.append({
text: "Image 1",
image: { value: "picture.png", imageType: 1 },
position: 1
});
qwe.append({
text: "Image 2",
image: { value: "picture.png", imageType: 1 },
position: 2
});
qwe.append({
text: "Image 1",
image: { value: "picture.png", imageType: 1 },
position: 3
});
}
}
你有'var imageToADD {value:“picture.png”...}'在你原来的代码中? 'image'是一个未使用的变量。 –
没错,错过了名字。谢谢,编辑 –