Qt4.8嵌入式。使用QCursor :: setPos()调整鼠标输入会产生一个抽搐光标

时间:2017-02-23 09:09:57

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

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

mouseMoveEvent()执行之前,看起来指针被绘制在正常位置。这导致看起来很糟糕,抽搐的光标。

以下是我如何尝试将指针放在某个位置,忽略用户输入的示例 预期行为:当我移动鼠标时,指针在一个地方保持稳定 观察到的bahaviour:指针摇摇欲坠。在几分之一秒内,在鼠标移动的位置绘制一个新指针,之后它会移回到它的 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嵌入式中调整鼠标灵敏度。我做得对吗?

1 个答案:

答案 0 :(得分:1)

简短回答:否。

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

您正在经历的抽搐是因为操作系统完成了绘制鼠标指针的工作,其频率可能与您从操作系统接收鼠标移动事件的频率不同。

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

解决方法:您可以完全隐藏鼠标指针,并绘制自己的指针。通过这种方式,您可以完全控制绘制光标的时间,避免毛刺。