问题
I currently have a program that draws lines and rectangles.
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
I use mouseMoveEvent to draw temporary preview of a line and when i release i draw the actual line. What I would like to know is how can i make mouseMoveEvent work work only when i have the left mouse button pressed down. I tried the following but then the whole function stops working.
void mouseMoveEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
//do stuff
}
}
but then the function doesn't do anything. Any assistance would be much appreciated
回答1:
From the documentation of QMouseEvent::button()
:
Note that the returned value is always Qt::NoButton for mouse move events.
You should use buttons()
instead.
if(event->buttons() & Qt::LeftButton)
{
//do stuff
}
来源:https://stackoverflow.com/questions/16279762/qt-mousemoveevent-only-when-left-mouse-button-is-pressed