在我的程序中,屏幕上有多边形,您可以拖动它们的边,顶点或整个多边形。我想向用户展示在鼠标当前位置发生的情况。为此,我需要在其中发生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();
...
}
答案 0 :(得分:0)
我知道了!
在进入多边形屏幕之前,程序中有一个弹出窗口,该弹出窗口未正确关闭(而不是使用popup.close()
,popup.visible = false; popup.destroy();
)。以正确的方式关闭它可以解决我的问题。