QML Mousearea onReleased не выпущен - PullRequest
       25

QML Mousearea onReleased не выпущен

0 голосов
/ 26 октября 2018

Я пытаюсь использовать Mousearea в своем прямоугольнике в QML.Я получаю onPressed, OnCLicked, onDoubleClicked и onPositionChanged.

Но QML не получает событие onReleased.Ребята, дайте мне знать, почему это не работаетМой код ниже:

Rectangle {
    width: parent.width
    height: 500
    MouseArea {
        id: mouseArea
        anchors.fill: parent
        hoverEnabled: true
        preventStealing: true
        onPositionChanged: {
            //                    console.log("onPositionChanged mouse X", mouse.x)
            //                    console.log("onPositionChanged mouse Y", mouse.y)
            mouse.accepted = false;
        }
        onClicked:{
            console.log("onClicked mouse X", mouse.x)
            console.log("onClicked mouse Y", mouse.y)
            mouse.accepted = false;
        }
        onDoubleClicked:{
            console.log("onDoubleClicked mouse X", mouse.x)
            console.log("onDoubleClicked mouse Y", mouse.y)
            mouse.accepted = false;
        }
        onExited:{
            console.log("onExited")
        }
        onPressAndHold:{
            console.log("onPressAndHold mouse X", mouse.x)
            console.log("onPressAndHold mouse Y", mouse.y)
            mouse.accepted = false;
        }
        onPressed:{
            console.log("onPressed mouse X", mouse.x)
            console.log("onPressed mouse Y", mouse.y)
            mouse.accepted = false;
        }
        onReleased:{
            console.log("onReleased mouse X", mouse.x)
            console.log("onReleased mouse Y", mouse.y)
            mouse.accepted = false;
        }
        onCanceled:{
            console.log("onCanceled mouse X", mouse.x)
            console.log("onCanceled mouse Y", mouse.y)
            mouse.accepted = false;
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 27 октября 2018

Согласно поведению события в этом документах .

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

Так что, если вы прокомментируете строки mouse.accepted = false; в приведенном выше коде, это сработает.

Рабочий код ниже

MouseArea {
    id: mouseArea
    anchors.fill: parent
    hoverEnabled: true
    preventStealing: true         
    onReleased:{
        console.log("onReleased mouse X", mouse.x)
        console.log("onReleased mouse Y", mouse.y)
    }
}
0 голосов
/ 18 января 2019

Если вы подключите обработчик onPressed, который очищает mouse.accepted, MouseArea предполагает, что если вас не интересует пресса, вас не интересуют никакие последующие связанные сигналы, поэтому он не генерирует нажатие, нажатие кнопки AndHold или релиз. С другой стороны, если вы оставите mouse.accepted установленным, то другие более низкие объекты MouseArea не будут видеть ни одно из сообщений. К сожалению, это делает невозможным мониторинг всех сигналов, обрабатываемых нижней областью мыши.

0 голосов
/ 26 октября 2018

On docs написано, что onRelease , Параметр мыши предоставляет информацию о щелчке, включая положение x и y при отпускании щелчка, а также о том,щелчок удерживался. onClicked и onPressAndHold replace onRelesed signal.

...