取消 QML DragHandlers 移动

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

我正在 QML 中使用

DragHandler
在屏幕上移动对象。我想添加一个功能,如果在拖动过程中按下 escape(鼠标仍然按下),则运动会跳回其起点并取消拖动。我目前不知道它是如何实现这一点的。
DragHandler
似乎没有
cancel
reset
功能。有人知道如何实现这一目标吗?

提前非常感谢您!

示例代码:

import QtQuick 2.14
import QtQuick.Controls 2.14

Window {
    width: 1280
    height: 768
    visible: true

    Rectangle {
        id: rectangle

        x: 100; y: 100;
        width: 100; height: 100;

        color: "red"
    }

    DragHandler {
        target: rectangle
    }

    Shortcut {
        sequence: "Escape"
        onActivated: ;
    }
}
javascript qt qml
1个回答
0
投票

您可以将

Rectangle
/
DragHandler
放入
Repeater
内。当您遇到 Escape 时,您可以切换
Repeater
模型来重置
Rectangle
/
DragHandler
模拟重置:

    Repeater {    
        id: repeater
        model: 1
        Rectangle {
            x: 100; y: 100;
            width: 100; height: 100;
            color: "red"
            DragHandler { }
        }
    }
    Shortcut {
        sequence: "Escape"
        onActivated: {
            repeater.model = 0;
            repeater.model = 1;
        }
    }

您可以在线尝试!

© www.soinside.com 2019 - 2024. All rights reserved.