我正在制作一个简单的油漆程序.似乎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);
}
}
Run Code Online (Sandbox Code Playgroud)
camoMaker是主要的小部件.
drawPoint()在内部QImage上绘制一个像素,并在绘图区域的QWidget上使用QPainter.
在我看来,鼠标移动的每个像素都没有调用mouseMoveEvent(),或者鼠标实际上只是跳过一些像素.
我知道它可能只是如何工作而不是Qt故障而是X11或操作系统如何处理鼠标位置/输入.
如果是这样我将如何解决它,我应该尝试插入2点注册?
Ree*_*sey 13
在大多数操作系统上,鼠标移动时,每个像素都不会发生鼠标事件.消息处理程序(包括KDE/linux)重复显示鼠标移动,但通常会跳过像素.
您需要跟踪最后一个像素位置,并绘制一条线,或在最后一个位置和当前位置之间添加额外的点.