Spec-Zone.ru › Qt 5.9

Тип QML SwipeDelegate

Делегат элемента, поддерживающего свайп. Подробнее...

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

ItemDelegate

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

Свойства

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

Присоединенные свойства

  • pressed : bool

Сигналы

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

Присоединенные сигналы

  • void 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.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.

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

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

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

void swipe.closed()

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

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

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

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

void swipe.completed()

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

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

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

См. также swipe.

void swipe.opened()

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

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

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

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

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

void clicked()

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

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

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

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

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

См. также pressed.

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

void swipe.close()

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

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

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

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, будут запущены.

Этот метод QML был представлен в 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.9/qml-qtquick-controls2-swipedelegate.html

Spec-Zone.ru

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