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

标签 c++ linux qt embedded-linux qt4.8

我试图通过每次 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 中调整鼠标灵敏度。我做得对吗?

最佳答案

简答:否。

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

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

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

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

关于c++ - Qt4.8嵌入。使用 QCursor::setPos() 调整鼠标输入会导致光标移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42411319/

相关文章:

c++ - 如何初始化 static const char* enum type traits 数组?

linux - 为什么git创建权限错误的文件?

澄清调用内核中函数的需要

c++ - Webview - 如何检测 Blackberry Cascades 中的 url 是否无效

c++ - 硬编码快捷方式

c++ - 使用定点表示法将 double 转换为字符串,没有尾随零且没有 sprintf

c++ - 编译时检查的字符串到整数映射是否可能?

c++ - 在另一个函数中初始化后无法访问 main 中的全局数组

c++ - 在 Linux 中从我的应用程序启动网页

linux - 避免linux + QT中的屏幕撕裂