在QML中,ListView、GridView、Repeater 需要数据模型提供数据,然后在显示。而如何显示则需要一个代理(delegate)来定义。模型可以是静态的,也能够动态添加删除或修改。delegate可以绑定到model的date roles 。例如:
import Qt 4.7
Item {
width: 200; height: 250
ListModel {
id: myModel
ListElement { type: "Dog"; age: 8 }
ListElement { type: "Cat"; age: 5 }
}
Component {
id: myDelegate
Text { text: type + ", " + age }
}
ListView {
anchors.fill: parent
model: myModel
delegate: myDelegate
}
}
myModel 有两个roles ,type和age,在delegate中Text用到了这两个roles
Text { text: type + ", " + age }
如果Text自己有type和age属性怎么办?这时我们可以用myModel.type、myModel.age来代替type和age,否则显示的将是Text的属性(property);

本文探讨了QML中的数据模型,特别是QList<QObject*>类型,它用于ListView、GridView和Repeater显示数据。QML允许通过代理(delegate)绑定到model的data roles,即使组件有自己的属性也能正确显示。此外,文章提到了QSringList作为数据模型的一种,并指出在C++中为QML提供数据模型对于大数据量或复杂处理的场景十分关键。

228

被折叠的 条评论
为什么被折叠?



