1

以下に示すように、スライダーと、スライダー上をスライドするために使用される画像があります。

Image
{
    id: slideImg
    source:  "/slider/SliderSelected.png"
    width: 65
    height: 65

    onDragActiveChanged:
    {


        if (!dragActive )
        {
            main.selection (x + slideImg.width/2 , true);
        }

    }
  property bool dragActive: dragArea.drag.active

}

マウスエリアは次のようになります。

MouseArea
{
    id: dragArea
    anchors.fill: thumb
    enabled: !isDisabled
    height: 65
    width: 463
    drag
    {
        readonly property int dragThreshold: 10
        target: thumb
        minimumX: 0
        minimumY: 0
        maximumY:100

        maximumX: mainElement.width - thumb.width
        axis: Drag.XAxis
        threshold: dragThreshold
    }
    onCanceled: {
        console.log("onCanceled ")

    }
    onExited: {
        console.log("onExited ")
        Drag.cancel()
    }


}

SliderImage を保持し、それをスライダーの領域外にスライドさせると、ドラッグをキャンセルしたいと思います。ドラッグ領域はマウス領域に制限する必要があります。マウス領域の外に移動した場合、ドラッグをキャンセルしたいと思います。しかし、 Drag.cancel() はドラッグをキャンセルしていません。ドラッグをキャンセルする方法はありますか?

4

1 に答える 1

0

これで何を達成しようとしているのかわかりませんが、drag.targetの設定を解除してみてください

onExited: drag.target = null
onEntered: drag.target = myTarget

これはあなたのために働くべきだと思います。

ただし、状態も確認したい場合があります (マウスが領域上にある場合にのみ有効になるドラッグ状態があります)。

MouseArea {
    id: dragArea
    anchors.fill: parent

    states: [
        State {
            when: dragArea.containsMouse

            PropertyChanges {
                target: dragArea
                drag.target: dragger
            }
        }
    ]
}

X 値と Y 値の最大値と最小値を確認することもできます。これはおそらくあなたが本当に探しているものです。
位置を自動的にリセットすることは可能だとは思いませんが、ドラッグを合法的に終了したらne値を追加の変数に格納し、そうでない場合はそれらを復元することで、自分で簡単に処理できます。

私はあなたを助けることができたことを願っています!

于 2016-08-31T11:50:46.017 に答える