【发布时间】:2019-06-01 06:16:46
【问题描述】:
在我的程序中,屏幕上有多边形,您可以拖动它们的边、顶点或整个多边形。我想向用户展示鼠标在当前位置会发生什么。为此,我需要发生这种情况的 mouseArea 的 onPositionChanged 事件处理程序。
拖动工作正常,问题是鼠标释放时 mouseArea 失去焦点,所以当用户不按下鼠标按钮时我无法调用我的 onPositionChanged 函数。
HoverEnabled 在我的 mouseArea 中设置为 true。好像有其他对象一直在偷焦点,但是我将 preventStealing 设置为 true,将 focus 设置为 true,并在整个项目中寻找“焦点”一词,并删除了会窃取焦点的每一行项目中也没有 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();
...
}
【问题讨论】:
-
您好,请为您的问题提供minimal reproducible example(即重现您的问题的代码)。我们中的一些人很难在脑海中画出一段。谢谢:-)
-
谢谢 TrebuchetMS。我尝试在一个新项目中重现该问题,但即使在动态创建时 mouseArea 也能正常工作。看来,动态创建与错误无关。我将编辑问题。
-
您好,Artur,感谢您编辑您的问题。现在,我...不明白这如何重现您的焦点被盗问题。是否有您将其锚定到的 mouseArea 的父级? (我也可以在
onPositionChanged中使用hoverEnabled:true执行console.debug(mouseX, mouseY),即使释放鼠标也会打印输出,解决评论中提出的问题。)我可以肯定地说,这可能是一个最小的例子。但请确保它是Complete and Verifiable as well。谢谢。 -
谢谢!在尝试复制我的问题时,我最终解决了它。