114 lines
2.7 KiB
QML
114 lines
2.7 KiB
QML
// Copyright (C) 2017 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
|
|
// This example demonstrates placing items in a view using
|
|
// an ObjectModel
|
|
|
|
import QtQuick
|
|
import QtQml.Models
|
|
|
|
pragma ComponentBehavior: Bound
|
|
|
|
Rectangle {
|
|
id: root
|
|
color: "lightgray"
|
|
width: 320
|
|
height: 480
|
|
property bool printDestruction: false
|
|
|
|
//! [0]
|
|
ObjectModel {
|
|
id: itemModel
|
|
|
|
Rectangle {
|
|
width: view.width
|
|
height: view.height
|
|
color: "#FFFEF0"
|
|
|
|
Text {
|
|
anchors.centerIn: parent
|
|
text: qsTr("Page 1")
|
|
font.bold: true
|
|
}
|
|
|
|
Component.onDestruction: if (root.printDestruction) print("destroyed 1")
|
|
}
|
|
Rectangle {
|
|
width: view.width
|
|
height: view.height
|
|
color: "#F0FFF7"
|
|
|
|
Text {
|
|
anchors.centerIn: parent
|
|
text: qsTr("Page 2")
|
|
font.bold: true
|
|
}
|
|
|
|
Component.onDestruction: if (root.printDestruction) print("destroyed 2")
|
|
}
|
|
Rectangle {
|
|
width: view.width
|
|
height: view.height
|
|
color: "#F4F0FF"
|
|
|
|
Text {
|
|
anchors.centerIn: parent
|
|
text: qsTr("Page 3")
|
|
font.bold: true
|
|
}
|
|
|
|
Component.onDestruction: if (root.printDestruction) print("destroyed 3")
|
|
}
|
|
}
|
|
|
|
ListView {
|
|
id: view
|
|
anchors {
|
|
fill: parent
|
|
bottomMargin: 30
|
|
}
|
|
model: itemModel
|
|
preferredHighlightBegin: 0
|
|
preferredHighlightEnd: 0
|
|
highlightRangeMode: ListView.StrictlyEnforceRange
|
|
orientation: ListView.Horizontal
|
|
snapMode: ListView.SnapOneItem
|
|
flickDeceleration: 2000
|
|
cacheBuffer: 200
|
|
}
|
|
//! [0]
|
|
Rectangle {
|
|
width: root.width
|
|
height: 30
|
|
anchors {
|
|
top: view.bottom
|
|
bottom: parent.bottom
|
|
}
|
|
color: "gray"
|
|
|
|
Row {
|
|
anchors.centerIn: parent
|
|
spacing: 20
|
|
|
|
Repeater {
|
|
model: itemModel.count
|
|
delegate: Rectangle {
|
|
required property int index
|
|
|
|
width: 5
|
|
height: 5
|
|
radius: 3
|
|
color: view.currentIndex === index ? "blue" : "white"
|
|
|
|
MouseArea {
|
|
anchors.centerIn: parent
|
|
width: 20
|
|
height: 20
|
|
onClicked: view.currentIndex = parent.index
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|