如何获取delegate
ListElement
中ListModel
的密钥,例如,如果我有以下内容:
ListModel {
id: modeloDeLista
ListElement{
nombre: "Articulo 1"
precio: 5000
descripcion: "Esto es una descripción"
}
ListElement{
nombre: "Articulo 2"
precio: 8000
descripcion: "Esto es una descripción"
}
}
Item {
width: parent.parent.width
height: 16
RowLayout {
anchors.fill: parent
Item {
Layout.fillWidth: true
Layout.fillHeight: true
Text {
text: key1 //<-----here would go the first key
anchors.centerIn: parent
}
}
}
}
但是在代理中而不是key1
代理,我希望更自动化,我怎么知道ListElement
答案 0 :(得分:1)
委托只是一个原型,你无法从中得到任何东西。您可以访问该委托实例的属性。
列表模型元素的键也可用作角色,如果要在委托中获取关联值,只需使用该键即可。因此,如果您的第一个密钥是nombre
,那么只需使用它即可。我的意思是......这就是将这些密钥放在首位的全部想法,因此您可以使用它们来引用特定的数据属性。
列表元素的行为与常规JS对象非常相似,例如,可以通过Object.keys(model.get(index)).length
获取键的数量。您还可以迭代每个对象的键和相关值。
但它们带有一些样板文件,因此键的数量总是高于实际的用户显式键。因此,密钥的数量实际上并不是一个相关的指标,而且它的使用也表明设计不佳,因为当&#34;方案&#34;时,QML视图表现最佳。是静态且已知的,而动态角色会增加显着的性能成本。由于重复,密钥数量不是指示性的:
ListElement {
name: "sadas"
value: 2
}
输出:
qml: value 2
qml: name sadas
qml: name sadas
qml: objectNameChanged undefined
qml: __0 undefined
qml: __1 undefined
如您所见,它包含重复,信号和其他一些不相关的内容。
总的来说,你的问题暗示你不知道自己在做什么,所以如果你分享你实际想要实现的目标,可能会给你更好的指导。