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

Posted

技术标签:

【中文标题】Qt4.8 内嵌。使用 QCursor::setPos() 调整鼠标输入会导致光标抽动【英文标题】:Qt4.8 embedded. Adjusting mouse input with QCursor::setPos() results in a twitching cursor 【发布时间】:2017-02-23 09:09:57 【问题描述】:

我正在尝试通过计算和设置每个 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);]

附:可能还有其他方法可以在 qt Embedded 中调整鼠标灵敏度。我做得对吗?

【问题讨论】:

【参考方案1】:

简答:不。

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

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

也没有办法告诉 QT 或操作系统在绘制光标的每一帧之前向您发送鼠标移动事件。

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

【讨论】:

以上是关于Qt4.8 内嵌。使用 QCursor::setPos() 调整鼠标输入会导致光标抽动的主要内容,如果未能解决你的问题,请参考以下文章

Qt 5.3 使用原来的QT4.8.4项目时QWebView QWebFrame

QT4.8.7PC端安装详细教程(MinGW 4.8.2和QTCreator4.2.0)

QT4.8.7PC端安装详细教程(MinGW 4.8.2和QTCreator4.2.0)

Qt4.8 移植(超详细Configure的参数)

VS2005编译QT4.8.2

编译ARM版的qt4.8失败求助