Spec-Zone.ru › Qt 5.14

Тип QML SwipeDelegate

Делегат элемента со свайпом. Подробнее...

Заявление импорта: import QtQuick.Controls 2.14
С момента: Qt 5.7
Наследует:

ItemDelegate

  • Список всех членов, включая унаследованные

Свойства

  • swipe
    • swipe.behind : Компонент
    • swipe.behindItem : Элемент
    • swipe.complete : bool
    • swipe.enabled : bool
    • swipe.left : Компонент
    • swipe.leftItem : Элемент
    • swipe.position : real
    • swipe.right : Компонент
    • swipe.rightItem : Элемент
    • swipe.transition : Переход

Прикреплённые свойства

  • pressed : bool

Сигналы

  • void swipe.closed()
  • void swipe.completed()
  • void swipe.opened()

Прикреплённые сигналы

  • clicked()

Методы

  • void swipe.close()
  • void swipe.open(side)

Подробное описание

SwipeDelegate представляет элемент представления, который можно свайпать влево или вправо, чтобы открыть дополнительные параметры или информацию. Он используется как делегат в представлениях, таких как ListView.

В следующем примере SwipeDelegate используется в ListView, чтобы разрешить удаление элементов из него путем свайпа влево:

ListView {
    id: listView
    anchors.fill: parent
    model: ListModel {
        ListElement { sender: "Bob Bobbleton"; title: "How are you going?" }
        ListElement { sender: "Rug Emporium"; title: "SALE! All rugs MUST go!" }
        ListElement { sender: "Electric Co."; title: "Electricity bill 15/07/2016 overdue" }
        ListElement { sender: "Tips"; title: "Five ways this tip will save your life" }
    }
    delegate: SwipeDelegate {
        id: swipeDelegate
        text: model.sender + " - " + model.title
        width: parent.width

        ListView.onRemove: SequentialAnimation {
            PropertyAction {
                target: swipeDelegate
                property: "ListView.delayRemove"
                value: true
            }
            NumberAnimation {
                target: swipeDelegate
                property: "height"
                to: 0
                easing.type: Easing.InOutQuad
            }
            PropertyAction {
                target: swipeDelegate
                property: "ListView.delayRemove"
                value: false
            }
        }

        swipe.right: Label {
            id: deleteLabel
            text: qsTr("Delete")
            color: "white"
            verticalAlignment: Label.AlignVCenter
            padding: 12
            height: parent.height
            anchors.right: parent.right

            SwipeDelegate.onClicked: listView.model.remove(index)

            background: Rectangle {
                color: deleteLabel.SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato"
            }
        }
    }
}

SwipeDelegate наследует свой API от ItemDelegate, который наследуется от AbstractButton. Например, можно установить text и реагировать на нажатия с помощью API AbstractButton.

Информация о ходе свайпа, а также компоненты, которые должны отображаться при свайпе, доступны через групповый свойство-объект swipe. Например, swipe.position содержит позицию свайпа в диапазоне -1.0 до 1.0. Свойство swipe.left определяет, какой элемент будет отображаться при свайпе вправо, и наоборот для swipe.right. Размещение этих компонентов оставляется на усмотрение приложений. Например, без указания позиции для swipe.left или swipe.right, произойдет следующее:

Если swipe.left и swipe.right привязаны к левой и правой сторонам элемента background (соответственно), они будут вести себя так:

При использовании swipe.left и swipe.right, элемент не может быть свайпан дальше левого и правого краёв. Для достижения такого поведения «заворачивания», установите swipe.behind. Это приведет к отображению того же самого элемента независимо от направления свайпа. Например, на изображении ниже, мы устанавливаем swipe.behind, а затем многократно свайпаем элемент в обоих направлениях:

См. также Настройка SwipeDelegate, Делегат управления и Пример удаления свайпом.

Документация свойств

swipe.behind : Компонент

Имя Описание
position Это свойство только для чтения, которое содержит положение свайпа относительно левого или правого края элемента управления. Когда это значение достигает -1.0 (левая сторона) или 1.0 (правая сторона), и кнопка мыши отпущена, complete будет true.
complete Это свойство только для чтения, которое указывает, полностью ли элемент управления открыт после свайпа влево или вправо.

Когда complete равно true, все интерактивные элементы, объявленные в left, right, или behind, получат события мыши.

enabled Это свойство определяет, можно ли свайпить элемент управления.

Это свойство было добавлено в QtQuick.Controls 2.2.

left Это свойство содержит легат (делегат).

Левый делегат расположен под contentItem и background. Когда SwipeDelegate свайпнется вправо, этот элемент будет постепенно отображаться.

Здесь могут использоваться как интерактивные, так и неинтерактивные элементы. Применяются стандартные правила обработки событий; если используется интерактивный элемент, например, Button, сигналы взаимодействия SwipeDelegate, такие как clicked(), не будут генерироваться, если кнопка нажата.

behind Это свойство содержит делегат, который отображается, когда SwipeDelegate свайпнется как влево, так и вправо.

Как и в случае с делегатами left и right, он располагается под contentItem и background. Однако SwipeDelegate, у которого свойство behind установлено, может непрерывно свайпиться с любой стороны и всегда будет показывать один и тот же элемент.

Здесь могут использоваться как интерактивные, так и неинтерактивные элементы. Применяются стандартные правила обработки событий; если используется интерактивный элемент, например, Button, сигналы взаимодействия SwipeDelegate, такие как clicked(), не будут генерироваться, если кнопка нажата.

right Это свойство содержит правый делегат.

Правый делегат располагается под contentItem и background. Когда SwipeDelegate свайпнется влево, этот элемент будет постепенно отображаться.

Здесь могут использоваться как интерактивные, так и неинтерактивные элементы. Применяются стандартные правила обработки событий; если используется интерактивный элемент, например, Button, сигналы взаимодействия SwipeDelegate, такие как clicked(), не будут генерироваться, если кнопка нажата.

leftItem Это свойство только для чтения, которое содержит элемент, созданный из компонента left.

Если left не установлено или положение не изменилось с момента создания SwipeDelegate, это свойство будет null.

behindItem Это свойство только для чтения, которое содержит элемент, созданный из компонента behind.

Если behind не установлено или положение не изменилось с момента создания SwipeDelegate, это свойство будет null.

rightItem Это свойство только для чтения, которое содержит элемент, созданный из компонента right.

Если right не установлено или положение не изменилось с момента создания SwipeDelegate, это свойство будет null.

transition Это свойство содержит переход, который применяется при отпускании свайпа или вызове swipe.open() или swipe.close().
SwipeDelegate {
    swipe.transition: Transition {
        SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic }
    }
}

Это свойство было добавлено в Qt Quick Controls 2.2.

См. также contentItem, background, swipe.open() и swipe.close().

Документация по свойству-привязке

[только для чтения] SwipeDelegate.pressed : bool

Это свойство-привязка может быть применено к неинтерактивному элементу, объявленному в swipe.left, swipe.right, или swipe.behind, для определения, нажат ли он. Элементы могут быть нажаты только тогда, когда swipe.complete равно true.

Например:

swipe.right: Label {
    anchors.right: parent.right
    height: parent.height
    text: "Action"
    color: "white"
    padding: 12
    background: Rectangle {
        color: SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato"
    }
}

Возможно использование нескольких элементов, которые индивидуально получают события мыши и касания. Например, для реализации двух действий в элементе swipe.right, используйте следующий код:

swipe.right: Row {
    anchors.right: parent.right
    height: parent.height

    Label {
        id: moveLabel
        text: qsTr("Move")
        color: "white"
        verticalAlignment: Label.AlignVCenter
        padding: 12
        height: parent.height

        SwipeDelegate.onClicked: console.log("Moving...")

        background: Rectangle {
            color: moveLabel.SwipeDelegate.pressed ? Qt.darker("#ffbf47", 1.1) : "#ffbf47"
        }
    }
    Label {
        id: deleteLabel
        text: qsTr("Delete")
        color: "white"
        verticalAlignment: Label.AlignVCenter
        padding: 12
        height: parent.height

        SwipeDelegate.onClicked: console.log("Deleting...")

        background: Rectangle {
            color: deleteLabel.SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato"
        }
    }
}

Обратите внимание, как присвоение color в каждом элементе background квалифицирует свойство-привязку с id метки. Это важно; использование свойств-привязок на элементе заставляет его принимать события. Предположим, мы опустили id в предыдущем примере:

color: SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato"

Элемент Rectangle фона является потомком метки, поэтому он естественным образом получает события до неё. На практике это означает, что цвет фона изменится, но обработчик onClicked в метке никогда не будет вызван.

Для интерактивных элементов управления (таких как Button), объявленных в этих элементах, используйте соответствующее свойство pressed.

Для нажатий на сам SwipeDelegate используйте его свойство pressed.

Это свойство было введено в QtQuick.Controls 2.1 (Qt 5.8).

См. также clicked().

Документация по сигналам

void swipe.closed()

Этот сигнал генерируется, когда делегат был свайпнут до закрытого состояния, и переход завершен.

Он полезен для выполнения действия при отмене свайпа. Например, он может использоваться для отмены удаления делегата из списка.

Этот сигнал был введен в QtQuick.Controls 2.2 (Qt 5.9).

См. также swipe и swipe.opened().

void swipe.completed()

Этот сигнал генерируется, когда swipe.complete становится true.

Он полезен для выполнения действия при завершении свайпа. Например, он может использоваться для удаления делегата из списка.

Этот сигнал был введен в QtQuick.Controls 2.1 (Qt 5.8).

См. также swipe.

void swipe.opened()

Этот сигнал генерируется, когда делегат был свайпнут в открытое состояние, и переход завершен.

Он полезен для выполнения действия при завершении свайпа. Например, он может использоваться для удаления делегата из списка.

Этот сигнал был введен в QtQuick.Controls 2.2 (Qt 5.9).

См. также swipe и swipe.closed().

Документация по привязанному сигналу

clicked()

Этот сигнал может быть привязан к неинтерактивному элементу, объявленному в swipe.left, swipe.right, или swipe.behind, для реагирования на щелчки. Элементы могут быть нажаты только тогда, когда swipe.complete равно true.

Для интерактивных элементов управления (таких как Button), объявленных в этих элементах, используйте соответствующий сигнал clicked() вместо него.

Для реагирования на щелчки по самому SwipeDelegate, используйте его сигнал clicked().

Примечание: См. документацию по pressed для получения информации о правильном использовании свойств, связанных с событиями.

Этот сигнал был введен в QtQuick.Controls 2.1 (Qt 5.8).

См. также pressed.

Документация по методам

void swipe.close()

Этот метод устанавливает position свайпа в 0. Будут активированы любые анимации, определенные для позиции x contentItem и background.

Этот метод был введен в QtQuick.Controls 2.1 (Qt 5.8).

См. также swipe и swipe.open().

void swipe.open(side)

Этот метод устанавливает position свайпа таким образом, чтобы он открывался со стороны side.

Доступные значения:

Постоянная Описание
SwipeDelegate.Left Значение position установлено в 1, что приводит к открытию свайпа слева. Должно быть указано либо swipe.left, либо swipe.behind; в противном случае вызов игнорируется.
SwipeDelegate.Right Значение position установлено в -1, что приводит к открытию свайпа справа. Должно быть указано либо swipe.right, либо swipe.behind; в противном случае вызов игнорируется.

Любые анимации, определенные для позиции x элемента contentItem и background, будут активированы.

Этот метод был представлен в QtQuick.Controls 2.2 (Qt 5.9).

См. также swipe и swipe.close().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qml-qtquick-controls2-swipedelegate.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API