qtqmlmousearea

QML Mousearea onReleased not emitted


I am trying to use Mousearea in my rectangle in QML. I am getting onPressed, OnCLicked, onDoubleClicked and onPositionChanged.

But, QML does not receive onReleased event. Can you guys let me know, why its not working? My code below:

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

Solution

  • As per the event behaviour in this docs.

    When handling this signal, changing the accepted property of the mouse parameter has no effect.

    So if you comment the lines mouse.accepted = false; in above code It ill work.

    Working code below

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