QML mouseArea不再关注释放鼠标键

时间:2019-01-06 08:32:27

标签: qt qml

在我的程序中,屏幕上有多边形,您可以拖动它们的边,顶点或整个多边形。我想向用户展示在鼠标当前位置发生的情况。为此,我需要在其中发生mouseArea的onPositionChanged事件处理程序。

拖动工作正常,问题在于mouseArea在鼠标释放时会失去焦点,因此当用户不按下鼠标按钮时,我无法调用onPositionChanged函数。

HoverEnabled在我的mouseArea中设置为true。似乎还有其他对象一直在窃取焦点,但我将preventStealing设置为true,将focus设置为true,并在整个项目中寻找“ focus”一词,并删除了会窃取焦点的每一行。项目中也没有focusScopes 。
示例代码:

MouseArea
{
    hoverEnaled: true
    focus: true
    preventStealing: true
    ...
    onPositionChanged:
    {
        doStuff();
        //Works fine while mouse button is pressed. Doesn't get called when it's released 
    }
    Component.onCompleted: forceActiveFocus();
    ...
}

1 个答案:

答案 0 :(得分:0)

我知道了! 在进入多边形屏幕之前,程序中有一个弹出窗口,该弹出窗口未正确关闭(而不是使用popup.close()popup.visible = false; popup.destroy();)。以正确的方式关闭它可以解决我的问题。