Repeater 类型用于创建大量类似项。与其它视图类型一样,Repeater有一个model和一个delegate。
首次创建Repeater时,会创建其所有delegate项。若存在大量delegate项,并且并非所有项都必须同时可见,则可能会降低效率。
有2种方式可以添加model,一个是数字,还有一个是数组。下面用代码演示一下,先看运行效果:
RepeaterDisplay.qml
import QtQuick
import QtQuick.Controls.MaterialWindow {width: 640height: 480visible: truetitle: qsTr("Hello World")Column{anchors.centerIn: parentspacing: 10// Repeater{// // model: 5// model: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"] //可以直接指定要创建的数量,也可以是一个数组// BlueButton{// width: 100// height: 40// // text: "Box " + index// text: modelData //若要获取数组中的值,可以用 modelData// }// }Repeater{model: ListModel{ListElement{name: "周一"; surfaceColor: "gray"}ListElement{name: "周二"; surfaceColor: "yellow"}ListElement{name: "周三"; surfaceColor: "white"}ListElement{name: "周四"; surfaceColor: "orange"}ListElement{name: "周五"; surfaceColor: "purple"}ListElement{name: "周六"; surfaceColor: "green"}ListElement{name: "周日"; surfaceColor: "pink"}}BlueButton{required property string namerequired property color surfaceColorwidth: 160height: 40text: nameRectangle{anchors.left: parent.leftanchors.verticalCenter: parent.verticalCenteranchors.leftMargin: 5width: 16height: 16radius: 8color: parent.surfaceColor}}}}
}
BlueButton.qml
import QtQuickRectangle{color: "blue"property alias text: label.text //把按钮的文本内容开放出去,方便后期根据需要修改Text {id: labeltext: qsTr("text")color: "white"anchors.centerIn: parent}
}