将切换模式设置为单张切换:snapMode: ListView.SnapOneItem
将列表改成水平浏览模式:orientation:ListView.Horizontal
currentIndex跟随变化:highlightRangeMode: ListView.StrictlyEnforceRange
禁止首尾滑动: boundsBehavior:Flickable.StopAtBounds
设置最大滑动速度:maximumFlickVelocity:7000 //像素/秒
添加header或footer:
ListView{
id:listView
anchors.fill: parent
model: 10
headerPositioning: ListView.PullBackHeader
header: Rectangle{
width: listView.width
height: 70
color: "green"
Label{
anchors.centerIn: parent
text: "this is header"
}
}
onCurrentIndexChanged: {
console.log("current index = ",currentIndex)
}
delegate: Rectangle{
width: listView.width
height: 280
color: index%2 ? "red":"yellow"
Label{
id:txt
anchors.centerIn: parent
font.pointSize: 100
text: index
}
Label{
anchors.top: txt.bottom
font.pointSize: 30
text: "currentIndex = " + listView.currentIndex
anchors.horizontalCenter: parent.horizontalCenter
}
}
}
下拉刷新:
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
Window {
visible: true
width: 250
height: 350
title: qsTr("ListView")
property bool refreshFlag: false
Rectangle{
width: parent.width
height: -listView.contentY
color: "cyan"
Label{
anchors.centerIn: parent
text:"下拉刷新"
visible: listView.contentYr
}
}
BusyIndicator{
id:busy
z:4
running: false
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
anchors.topMargin: parent.height/3.
Timer{
interval: 2000
running: busy.running
onTriggered: {
busy.running = false
}
}
}
ListView{
id:listView
anchors.fill: parent
model: 30
onContentYChanged: {
if(-contentY > 40){
refreshFlag = true
}
}
onMovementEnded: {
if(refreshFlag){
refreshFlag = false
busy.running = true
}
}
onCurrentIndexChanged: {
console.log("current index = ",currentIndex)
}
delegate: Rectangle{
width: listView.width
height: 70
color: index%2 ? "red":"yellow"
Label{
id:txt
anchors.centerIn: parent
font.pointSize: 20
text: index
}
}
}
}