1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
// This example shows how a ListView can be separated into sections using
// the ListView.section attached property.
import QtQuick
import QtQuick.Controls
Rectangle {
id: container
width: 300
height: 360
ListModel {
id: animalsModel
ListElement {
name: "Ant"
size: "Tiny"
}
ListElement {
name: "Flea"
size: "Tiny"
}
ListElement {
name: "Parrot"
size: "Small"
}
ListElement {
name: "Guinea pig"
size: "Small"
}
ListElement {
name: "Rat"
size: "Small"
}
ListElement {
name: "Butterfly"
size: "Small"
}
ListElement {
name: "Dog"
size: "Medium"
}
ListElement {
name: "Cat"
size: "Medium"
}
ListElement {
name: "Pony"
size: "Medium"
}
ListElement {
name: "Koala"
size: "Medium"
}
ListElement {
name: "Horse"
size: "Large"
}
ListElement {
name: "Tiger"
size: "Large"
}
ListElement {
name: "Giraffe"
size: "Large"
}
ListElement {
name: "Elephant"
size: "Huge"
}
ListElement {
name: "Whale"
size: "Huge"
}
}
//! [0]
// The delegate for each section header
Component {
id: sectionHeading
Rectangle {
width: ListView.view.width
height: childrenRect.height
color: "lightsteelblue"
required property string section
Text {
text: parent.section
font.bold: true
font.pixelSize: 20
}
}
}
ListView {
id: view
anchors.top: parent.top
anchors.bottom: buttonBar.top
width: parent.width
model: animalsModel
delegate: Text {
required property string name
text: name
font.pixelSize: 18
}
section.property: "size"
section.criteria: ViewSection.FullString
section.delegate: sectionHeading
}
//! [0]
Row {
id: buttonBar
anchors.bottom: parent.bottom
anchors.bottomMargin: 1
spacing: 1
CheckBox {
id: labelAtStartCheckBox
text: qsTr("CurrentLabelAtStart")
onClicked: {
if (checked)
view.section.labelPositioning |= ViewSection.CurrentLabelAtStart
else
view.section.labelPositioning &= ~ViewSection.CurrentLabelAtStart
}
}
CheckBox {
id: labelAtEndCheckBox
text: qsTr("NextLabelAtEnd")
onClicked: {
if (checked)
view.section.labelPositioning |= ViewSection.NextLabelAtEnd
else
view.section.labelPositioning &= ~ViewSection.NextLabelAtEnd
}
}
}
}
|