假设我的鼠标左键已经按下。 若移动鼠标,会发生的move事件,button返回Qt::NoButton,buttons返回LeftButton。 再按下右键,会发生press事件,button返回RightButton,buttons返回LeftButton|RightButton 再移动鼠标,会发生move事件,button返回Qt::NoButton,buttons返回LeftButton|RightButton 再松开左键,会发生Release事件,button返回LeftButton,buttons返回RightButton 总而言之,button返回“那个按钮发生了此事件”,buttons返回"发生事件时哪些按钮还处于按下状态"。
常用的判断条件(Event->buttons() & Qt::LeftButton)
如果鼠标左键处于按下状态,则结果为真,如果不考虑左右键都处于按下状态,则 与event->buttons() == Qt::LeftButton在结果上是相同的。
void Widget::mousePressEvent(QMouseEvent *event)
{
if(event->button() & Qt::LeftButton)
{
qDebug()<<"鼠标左键按下:";
}
else if(event->button() & Qt::RightButton)
{
qDebug()<<"鼠标右键按下:";
}
else if(event->button() & Qt::MidButton)
{
qDebug()<<"鼠标中键按下:";
}
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() & Qt::LeftButton)
{
qDebug()<<"鼠标左键按下移动:";
}
if(event->buttons() & Qt::RightButton)
{
qDebug()<<"鼠标右键按下移动:";
}
if(event->buttons() & Qt::MidButton)
{
qDebug()<<"鼠标中键按下移动:";
}
}
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() & Qt::LeftButton)
{
qDebug()<<"鼠标左键释放:";
}
else if(event->button() & Qt::RightButton)
{
qDebug()<<"鼠标右键释放:";
}
else if(event->button() & Qt::MidButton)
{
qDebug()<<"鼠标中键释放:";
}
}