Spec-Zone.ru › Qt 6.1

Тип QML SwipeDelegate

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

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

ItemDelegate

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

Свойства

  • swipe
    • swipe.behind : Компонент
    • swipe.behindItem : Элемент
    • swipe.complete : bool
    • swipe.enabled : bool
    • swipe.left : Компонент
    • swipe.leftItem : Элемент
    • swipe.position : вещественное число
    • 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 to Remove.

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

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().

Документация присоединённого свойства

[только для чтения, начиная с QtQuick.Controls 2.1 (Qt 5.8)] 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().

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

[since QtQuick.Controls 2.2 (Qt 5.9)] void swipe.closed()

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

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

Примечание: Соответствующий обработчик - swipe.onClosed.

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

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

[since QtQuick.Controls 2.1 (Qt 5.8)] void swipe.completed()

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

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

Примечание: Соответствующий обработчик - swipe.onCompleted.

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

См. также swipe.

[since QtQuick.Controls 2.2 (Qt 5.9)] void swipe.opened()

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

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

Примечание: Соответствующий обработчик - swipe.onOpened.

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

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

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

[since QtQuick.Controls 2.1 (Qt 5.8)] clicked()

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

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

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

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

Примечание: Соответствующий обработчик - onClicked.

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

См. также pressed.

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

[since QtQuick.Controls 2.1 (Qt 5.8)] void swipe.close()

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

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

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

[since QtQuick.Controls 2.2 (Qt 5.9)] void swipe.open(enumeration 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-6.1/qml-qtquick-controls2-swipedelegate.html

Spec-Zone.ru

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