在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);