Как уничтожить делегат смахивания при отмене смахивания - PullRequest
0 голосов
/ 27 апреля 2020

Борьба с уничтожением делегата смахивания после «бездействия» смахивания. Например, я проводю вправо, чтобы удалить, и появляется кнопка, которую я могу нажать, чтобы удалить, и я провожу влево, чтобы закрыть кнопку, но кнопка остается. Я просмотрел документацию ListView и SwipeDelegate, но не вижу, что мне нужно (пример или метод) для уничтожения делегата delete swipe. У меня есть быстрый минимальный пример и скриншоты ниже, чтобы показать, что я имею в виду:

import QtQuick 2.12
import QtQuick.Controls 2.5

ApplicationWindow {
    visible: true
    width: 400
    height: 200
    title: qsTr("Scroll")

    ScrollView {
        anchors.fill: parent

        ListView {
            id: listView
            width: parent.width
            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
                width: parent.width
                height: theCard.height
                background: Rectangle {
                    color: "#00000000"
                }

                contentItem: Label {
                    id: card
                    text: sender
                }

                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
                    }
                }

                onClicked: {
                    swipe.complete=false
                }

                swipe.left: Label {
                    id: deleteLabel
                    text: qsTr("Delete")
                    color: "white"
                    height: parent.height
                    visible: swipeDelegate.swipe.close

                    width: 100
                    anchors.left: listView.currentItem.right

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

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

enter image description here

enter image description here

enter image description here

Как видно на этом последнем снимке, кнопка удаления все еще присутствует. Я хотел бы уничтожить кнопку удаления на «не делать» смахивание. Я не знаю правильной терминологии для этого.

...