ListView
QML中的ListView、GridView、Repeater等元素需要数据模型来提供显示的数据,这些元素需要一个位模型中的每一项数据生成一个实例的代理组件(delegate component)。模型可以是静态的,也可以对其动态修改,插入,删除,移动。
给代理提供的数据,通常是叫做角色的数据绑定到代理,如下面的ListModel有2个角色,type和age,ListView带有一个代理,并绑定这些角色以显示他们的值。
Item{
width:200;height:200;
ListModel{
id:myModel
ListElement{type:"Dog";age:8}
ListElement{type:"Cat";age:5}
}
Component{
id:myDelegate
Text{
text:
{type+","+age}
}
}
ListView{
anchor.fill:parent;
model:myModel;
delegate:myDelegate
}
}
还可以直接在ListView中直接写上代理
//delagate中每一行作为数据的代理
ListView{
anchors.fill:parent
model:fruitModel
delegate:Row{
Text{
text:"fruit:"+type;
}
Text{
text:"fruit:"+age;
}
}
}
ListModel提供了可以直接在Js中调用的方法。这时候第一次插入的项决定使用模型的视图可用的角色。
如创建了一个空的ListModel,并在JS中填充,第一次插入时指定的角色将显示在视图中: