repeater,用於創建多個基於item的組件,通常會用到三個屬性,count-創建item的數量,model-指定數據,delegate-待實例化的模型,一般在創建repeater時不顯示初始化。另外,還有其它常用屬性:
itemAt(index) 根據索引返回對應的delegate實例
model 可以取數字(表示創建的數量)、字符串列表、對象列表、ListModel
雖然repeater可以一次性創建大量的同一類型的Item,但是當量大時,效率就會低下;而listview呢它會創建少部分item,直到用戶需要看到它時才會再創建。
下面是展示代碼
import QtQuick 2.2 import QtQuick.Layouts 1.1 Rectangle { id: root width: 320 height: 480 color: "#EEEEEE" Grid{ anchors.left: parent.left anchors.leftMargin: 4 anchors.top: parent.top anchors.topMargin: 4 rows: 3 spacing: 5 Repeater{ //model: 8 //數字模式 model: ["A", "B", "C", "D", "E", "F", "G", "H"] //字符串模式 // model:[ // {"text": "A", "object": "RA"}, // {"text": "B", "object": "RB"}, // {"text": "C", "object": "RC"}, // {"text": "D", "object": "RD"}, // ] //對象模式 // model: ListModel{ // ListElement{name : "A"; object: "RA";} // ListElement{name : "B"; object: "RB";} // ListElement{name : "C"; object: "RC";} // ListElement{name : "D"; object: "RD";} // } //ListModel模式 Rectangle{ width: root.width / 3 - 7 height: width color: Qt.rgba(Math.random(), Math.random(), Math.random(), 1) Text{ anchors.centerIn: parent font.pixelSize: 15 font.bold: true color: "red" text: modelData //modelData.name 或者modelData.text } } } } }