标签: mousearea

当光标移出其鼠标区域时,按住时保持光标形状

我正在实现窄的调整大小句柄,这给我带来了烦人的行为。当鼠标直接位于手柄上方时,光标形状符合预期,但是一旦开始拖动手柄,光标形状就会变得不一致。造成这种情况的原因有两个:

  • 当光标快速移动并在手柄之前移动直到手柄“追上”(或当“fluid qml”太流畅时) - 这尤其令人讨厌,因为光标形状快速变化并闪烁

  • 当光标移动到手柄允许的自由度之外时

我查了一下文档,但它似乎没有包含任何关于在按下新闻之前锁定光标的内容。

我还是设法找到一个黑客修复它-使用虚拟叠加MouseArea使用acceptedButtons: Qt.NoButton-这实际上有助于假光标的一致性,但有它自己的问题。拥有覆盖鼠标区域不允许光标在手柄上方时更改为调整大小的形状,因为手柄位于覆盖鼠标区域下方,因此根本无法修改光标形状。因此只有在单击手柄后才会开始调整大小形状,这远非理想。将覆盖鼠标区域设置为enabled: false不会改变这一点 - 它仍然会阻止来自底层鼠标区域的光标形状变化。也有一个解决方法,例如将覆盖鼠标区域大小设置为 0x0,但这有点难看。

理想情况下,光标形状应该持续到鼠标区域被按下,无论它是在其区域内还是在其区域外 - 毕竟,如果您离开它,则不会释放按下,因此鼠标区域仍然处于控制状态并且应该保持其光标形状。例如 - 窗口调整大小手柄保持调整大小形状,即使它被移动以将窗口调整为小于其最小尺寸,直到按下被释放。

在我看来,实现中似乎存在缺陷MouseArea- 按下时不保留光标形状,即使禁用鼠标区域,光标形状也会更改。

qt cursor qml mousearea

5
推荐指数
1
解决办法
473
查看次数

QML MouseArea:以编程方式将鼠标移入 MouseArea 后,onExited 不会触发

此问题发生在 Windows 上,但不会发生在 Linux 上。其他平台我没试过。

我有一个QCursor用于设置鼠标位置的自定义类(下面的代码)。

问题在于以下代码(repo):

import QtQuick 2.15
import QtQuick.Window 2.15

// Custom C++ class, implementation below
import io.github.myProject.utilities.mousehelper 1.0

Window {
    visible: true
    width: 800
    height: 600

    MouseHelper { id: mouseHelper }

    MouseArea {
        id: mouseArea
        hoverEnabled: true
        anchors.fill: parent
        property var p

        onPressed: {
            p = mouseArea.mapToGlobal(
                mouseArea.width * 0.5, mouseArea.height * 0.5);
            mouseHelper.setCursorPosition(0, 0);
        }

        onReleased: {
            mouseHelper.setCursorPosition(p.x, p.y);
        }

        onExited: {
            console.log('This should happen twice, but it only happens once.'); …
Run Code Online (Sandbox Code Playgroud)

qt qml mousearea

3
推荐指数
1
解决办法
253
查看次数

标签 统计

mousearea ×2

qml ×2

qt ×2

cursor ×1