在我的程序中,屏幕上有多边形,您可以拖动它们的侧面,顶点或整个多边形。我想向用户显示鼠标处于当前位置时将发生的情况。为此,我需要鼠标区域的onPositionChanged事件处理程序。
拖动工作正常,问题是鼠标区域在释放鼠标的那一刻失去了焦点,因此当用户不按鼠标按钮时,我无法调用我的onPositionChanged函数。
悬停启用在我的鼠标区域中设置为 true。似乎其他对象一直在窃取焦点,但我将 preventStealing 设置为 true,将焦点设置为 true,并在整个项目中寻找"焦点"一词,并删除了会窃取焦点的每一行项目中也没有 focusScope。
示例代码:
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();
...
}
我想通了!在进入我的多边形屏幕之前,程序中有一个弹出窗口,它被不正确地关闭(而不是popup.close()
,popup.visible = false; popup.destroy();
被使用)。以正确的方式关闭它解决了我的问题。