Qt,鼠标跳过,没有更新每个像素,mouseMoveEvent()

我正在做一个简单的绘画程序。 Qt(和KDE)似乎是一个简单的实现方法。 我发现Qt很容易使用,但现在我遇到了一个问题。

当我在程序中绘制某些东西时,如果我将鼠标移动到快速,则鼠标将跳过。

喜欢这个:
替代文字
它似乎像一个长长的string。

当鼠标左键被按下时,我使用mouseMoveEvent()绘制一个像素到我的图像。 我叫setMouseTracking(true); 所以只要我移动鼠标就应该调用这个事件。

void camoMaker::mouseMoveEvent(QMouseEvent *ev) { if(ev->state()==Qt::LeftButton) { QPoint mPoint=ev->pos(); mPoint.setX(mPoint.x()-80); drawPoint(mPoint); } } 

camoMaker是主要的部件。
drawPoint()在内部QImage上绘制一个像素,并在绘制区域的QWidget上使用QPainter。

在我看来,mouseMoveEvent()不是每一个鼠标移动像素,或鼠标实际上只是跳过一些像素的调用。

我明白,它可能只是如何工作,而不是Qt故障,但X11或操作系统如何处理鼠标位置/input。

如果是这样,我该如何去解决它,我应该尝试插入2点,获得注册?

在大多数操作系统上,随着鼠标移动,鼠标事件不会发生在每个像素上。 消息处理程序(包括KDE / linux)反复显示鼠标移动,但是像素常常被跳过。

您需要跟踪最后一个像素位置,然后绘制一条线,或者在最后一个位置和当前位置之间添加额外的点。

你是对的 – 窗口系统不会为每个像素提供鼠标移动事件。 您需要在获取事件的像素之间插入一条线。