QML 中的可滑动按钮

问题描述 投票:0回答:1

我想创建一个组件,它可以从左到右滑动一个矩形来模拟打开或关闭,就像iOS从左到右按钮关闭手机一样(https://youtu.be/qEJ5PerUqFw?t=42秒40像这样)。你知道我该怎么做吗?

致以诚挚的问候

我尝试使用 Slider 和 SwipeDelegate 组件。

button qml swipe qtquick2
1个回答
0
投票

在 QML 中,您可以创建任何您想要的内容,但您应该坚持使用标准控件,因为它们对于用户来说是可以理解和熟悉的。 如果您仍然想创建某种自定义控件,您可以创建如下内容:

import QtQuick
import QtQuick.Controls

Window {
    id: window
    visible: true
    width: 600
    height: 400
    title: "Slider test"

    Rectangle {
        id: container
        anchors.centerIn: parent
        width: 300
        height: 50
        radius: 25
        color: "lightgrey"
        border.color: "grey"
        signal myEvent(bool isOn)

        Rectangle {
            id: draggableRect
            width: 50
            height: 48
            radius: 25
            color: "orange"
            border.color: "grey"

            x: 1
            y: 1

            MouseArea {
                id: dragArea
                anchors.fill: parent
                drag.target: parent
                drag.axis: Drag.XAxis
                drag.maximumX: 250
                drag.minimumX: 0

                onReleased: {
                    if (draggableRect.x < 240)
                    {
                        backAnim.running = true;
                    }
                    else
                    {
                        draggableRect.x = 250;
                        container.myEvent(true);
                    }
                }
            }

            PropertyAnimation { id: backAnim; target: draggableRect; property: "x"; to: 1; duration: 300; onFinished: container.myEvent(false); }
        }
    }


    Connections {
        target: container
        function onMyEvent(isOn) { console.log(isOn ? "ON" : "OFF"); }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.