8

我目前有一个绘制线条和矩形的程序。

void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);

我使用 mouseMoveEvent 来绘制一条线的临时预览,当我释放时,我绘制了实际的线。我想知道的是,只有当我按下鼠标左键时,我才能使 mouseMoveEvent 工作。我尝试了以下操作,但随后整个功能停止工作。

void mouseMoveEvent(QMouseEvent *event)
{
     if(event->button() == Qt::LeftButton)
     {
        //do stuff
     }
}

但随后该功能不做任何事情。任何帮助将不胜感激

4

1 回答 1

17

从以下文档QMouseEvent::button()

请注意,鼠标移动事件的返回值始终是 Qt::NoButton。

你应该buttons()改用。

if(event->buttons() & Qt::LeftButton)
{
    //do stuff
}
于 2013-04-29T13:54:44.933 回答