Spec-Zone.ru › Qt 5.13

Тип QML SwipeDelegate

Делегат элемента, который можно свайпать влево или вправо. Используется как делегат в представлениях, таких как ListView. Подробнее...

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

ItemDelegate

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

Свойства

  • swipe
    • swipe.position : real
    • swipe.complete : bool
    • swipe.enabled : bool
    • swipe.left : Component
    • swipe.behind : Component
    • swipe.right : Component
    • swipe.leftItem : Item
    • swipe.behindItem : Item
    • swipe.rightItem : Item
    • swipe.transition : 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. Например, вы можете установить текст и реагировать на нажатия с помощью 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.position : вещественное

Имя Описание
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.13/qml-qtquick-controls2-swipedelegate.html

Spec-Zone.ru

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