repeater是用来重复创建同一类型组件的对象,嗯。。提到这个首先得知道QML的一些机制,提倡设计者让数据与模型分离开来,数据是数据模型是模型。repeater就可以根据数据,调用同一个模型去创建多个对象。直接举个例子吧
import QtQuick 2.0
Row {
Repeater {
model: 3
delegate:Rectangle {
width: 100; height: 40
border.width: 1
color: "yellow"
}
}
}
这是QT帮助文档里面的代码 Row是一个布局器,只看repeater部分,这个是代表创建3个这样的rectangle。
model属性存放数据,可以是数字,也可以是数组,还可以是一个数据类型的对象
delegate属性存放模型,在repeater中,这个delegate属性名是可以省略的,直接写模型也是没问题的,这个模型会调用model的数据
通过repeater生成的对象如果想要访问的话就需要通过repeater的 Item itemAt(index) 函数进行访问
定义模型就不说了,这里具体讲的是数据的定义,一般数据分三种情况:
1.模型不需要数据,只需要指定个数
这种情况只需要将model给定一个数字,代表创建几个,就类似于开头例子那样
2.模型需要简单的数据,这个时候可以使用数组进行创建
这个时候数组的长度,就是创建的个数,数组的内容就是模型的数据,如下面的例子所示:
Repeater{
id:id_repeater
model: ["data1","data2"]
Rectangle{
width: 120
height: 120
color: "red"
visible: index === 0
Text {
text: modelData
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
color: "black"
}
}
}
这样就会创建两个内部有文字的rectangle,