// Copyright (C) 2017 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause import QtQuick Rectangle { width: 400; height: 240 color: "white" ListModel { id: appModel ListElement { name: "Music"; icon: "pics/AudioPlayer_48.png" } ListElement { name: "Movies"; icon: "pics/VideoPlayer_48.png" } ListElement { name: "Camera"; icon: "pics/Camera_48.png" } ListElement { name: "Calendar"; icon: "pics/DateBook_48.png" } ListElement { name: "Messaging"; icon: "pics/EMail_48.png" } ListElement { name: "Todo List"; icon: "pics/TodoList_48.png" } ListElement { name: "Contacts"; icon: "pics/AddressBook_48.png" } } Component { id: appDelegate Item { width: 100; height: 100 scale: PathView.iconScale required property string name required property string icon required property int index Image { id: myIcon y: 20; anchors.horizontalCenter: parent.horizontalCenter source: parent.icon } Text { anchors { top: myIcon.bottom; horizontalCenter: parent.horizontalCenter } text: parent.name } MouseArea { anchors.fill: parent onClicked: view.currentIndex = parent.index } } } Component { id: appHighlight Rectangle { width: 80; height: 80; color: "lightsteelblue" } } PathView { id: view anchors.fill: parent highlight: appHighlight preferredHighlightBegin: 0.5 preferredHighlightEnd: 0.5 focus: true model: appModel delegate: appDelegate path: Path { startX: 10 startY: 50 PathAttribute { name: "iconScale"; value: 0.5 } PathQuad { x: 200; y: 150; controlX: 50; controlY: 200 } PathAttribute { name: "iconScale"; value: 1.0 } PathQuad { x: 390; y: 50; controlX: 350; controlY: 200 } PathAttribute { name: "iconScale"; value: 0.5 } } } }