2017-02-23 728 views
0

我试图通过计算和设置指针的新位置来调整用户鼠标输入(减慢/系紧鼠标指针)每个mouseMoveEvent()。使用QCursor :: setPos()调整鼠标输入导致抽搐光标

它看起来像指针绘制在它的正常位置之前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

简短的回答

号不幸的是,有没有办法只使用Qt库来调整鼠标灵敏度。

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

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

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