// 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 "content" 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: container.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 ToggleButton { label: "CurrentLabelAtStart" onToggled: { if (active) view.section.labelPositioning |= ViewSection.CurrentLabelAtStart else view.section.labelPositioning &= ~ViewSection.CurrentLabelAtStart } } ToggleButton { label: "NextLabelAtEnd" onToggled: { if (active) view.section.labelPositioning |= ViewSection.NextLabelAtEnd else view.section.labelPositioning &= ~ViewSection.NextLabelAtEnd } } } }