我正在实现狭窄的调整大小句柄,这给我带来了烦人的行为。当鼠标直接位于手柄上方时,光标形状与预期一致,但一旦开始拖动手柄,光标形状就会变得不一致。造成这种情况的原因有两个:
当光标快速移动并在手柄之前移动直到手柄“赶上”(或者当“fluid qml”过于流畅时) - 这尤其令人讨厌,因为光标形状会迅速变化并闪烁
当光标移动到手柄允许的自由度之外时
我查阅了文档,但它似乎没有包含任何关于锁定光标的内容,直到按下释放。
我确实设法找到了修复它的方法 - 使用虚拟覆盖MouseArea
-acceptedButtons: Qt.NoButton
这实际上有助于伪造光标一致性,但也有其自身的问题。拥有该覆盖鼠标区域不允许光标在手柄上方时更改为调整大小形状,因为手柄位于覆盖鼠标区域下方,因此根本无法修改光标形状。因此,仅在单击手柄后才开始调整大小形状,这远非理想。将覆盖鼠标区域设置为enabled: false
不会改变这一点 - 它仍然会阻止来自底层鼠标区域的光标形状变化。也有一个解决方法,例如将覆盖鼠标区域大小设置为 0x0,但它有点难看。
理想情况下,光标形状应该一直持续到鼠标区域被按下,无论它是在其区域内还是在其区域外 - 毕竟,如果您离开它,则不会释放按下,因此鼠标区域仍然处于控制之中并且应该保持其光标形状。例如 - 窗口调整大小手柄保持调整大小形状,即使它被移动以调整窗口大小小于其最小尺寸,直到按下释放。
对我来说,执行中似乎存在缺陷MouseArea
- 按下时不会保持光标形状,即使禁用鼠标区域也会改变光标形状。