Qt4.8嵌入。使用 QCursor::setPos() 调整鼠标输入会导致光标移动

Qt4.8 embedded. Adjusting mouse input with QCursor::setPos() results in a twitching cursor

我试图通过计算和设置指针的新位置来调整用户鼠标输入(慢 down/fasten 鼠标指针)每个 mouseMoveEvent()

看起来指针是在执行 mouseMoveEvent() 之前在其正常位置绘制的。这会导致光标看起来很糟糕,并且会抖动。

这是一个示例,说明我将如何尝试将指针保持在某个位置,而忽略用户输入。
预期行为:当我移动鼠标时,指针保持稳定在一处。
观察到的行为:指针抖动。几分之一秒后,在鼠标移动的位置绘制了一个新指针,之后又移回了 oldPosition.

void MainWindow::mouseMoveEvent(QMouseEvent *)
{
    // [event->accept();] Setting this does not help
    // [setCursor(Qt::BlankCursor);] Setting this does not help

    QCursor::setPos(oldPosition);

    // [setCursor(Qt::ArrowCursor);]
}

P.S。可能还有其他方法可以在嵌入式 qt 中调整鼠标灵敏度。我做对了吗?

简答:否

遗憾的是,仅使用 QT 库无法调整鼠标灵敏度。

您遇到的抽搐是因为 OS 执行绘制鼠标指针的工作,其频率可能与您从 OS 接收鼠标移动事件的频率不同。

也无法告诉 QT 或 OS 在绘制光标的每一帧之前向您发送鼠标移动事件。

解决方法:您可以完全隐藏鼠标指针,然后自己绘制。这样您就可以完全控制何时绘制光标,避免出现故障。