一、model(模型)和view(视图)都通过delegate(代理)连接。model提供数据,每个数据项可能有多个值。
二、Repeater视图:适合有限的静态数据,不可滑动
最基本的分离数据与显示的方法,被用于实例化一组数据项,很容易与一个用于填充用户界面的定位器相结合。
通过index区分子元素,好像相当于listwidget里面很多item
每个Repeater元素包含一个Text元素,可以将text属性设置为index
import QtQuick 2.12
import QtQuick.Window 2.12
Window {
***Column***{
spacing:2
*Repeater*{
model:["A","B", "C","D","E"]
Rectangle{
width:100
height:20
radius:3
color: "lightBlue"
Text{
anchors.centerIn: parent
text:index+" :"+modelData
}
}
}
}
visible: true
width: 360
height: 360
title: qsTr("Hello World")
}
三、model:ListModel链表模型
ListElement链表元素
左边加一个⚪
import QtQuick 2.12
import QtQuick.Window 2.12
Window {
***Column***{
spacing:2
*Repeater*{
model:*ListModel*{
ListElement{name:"marrt";surryColor:"red"}
ListElement{name:"marrt";surryColor:"red"}
ListElement{name:"marrt";surryColor:"red"}
}
Rectangle{
width:100
height:20
radius:3
color: "lightBlue"
Text{
anchors.centerIn: parent
text:name
}
Rectangle{
anchors.left: parent.left
anchors.verticalCenter: parent
anchors.leftMargin: 2
width:16
height: 16
radius:8
border.color: "black"
border.width: 1
color: surryColor
}
}
}
}
visible: true
width: 360
height: 360
title: qsTr("Hello World")
}
四、ListView与Repeater区别:
ListView用delegate实例化,使用一个model,且两个delegate之间可以设置间距。
五、listView设置clip为true来激活裁剪属性
snapMode属性可以限制一个视图内元素的停止位置