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

我正在研究一个简单的绘画程序。看来Qt(和KDE)是实现它的一种简便方法。我发现使用Qt非常容易,但是现在遇到了问题。

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

像这样:

替代文字

它应该像一个长字符串。

当按下鼠标左键时,我正在使用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或操作系统如何处理鼠标位置/输入。

如果是这样,我将如何解决它,我应该尝试从已注册的2个点进行插值吗?

回答:

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

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

以上是 Qt,鼠标跳过,不更新每个像素,mouseMoveEvent() 的全部内容, 来源链接: utcz.com/qa/420162.html

回到顶部