QT中的事件不是直接由应用程序发送到事件处理程序的,而是在中间有一个事件分发器.
可以在事件分发器中拦截到事件,然后返回true.这样事件就不会再往下发了.
#include "mylabel.h"
#include "qdebug.h"
#include "QString"
#include "QMouseEvent"
MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{
//setMouseTracking(true);
}
void MyLabel::mousePressEvent(QMouseEvent *ev)
{
}
void MyLabel::leaveEvent(QEvent *event)
{
}
void MyLabel::mouseMoveEvent(QMouseEvent *ev)
{
qDebug()<<"鼠标移动 ";
}
bool MyLabel::event(QEvent *e)
{
//鼠标按下
if(e->type()==QEvent::MouseButtonPress)
{
qDebug()<<"事件过滤: 鼠标按下";
return true;
}
//其他事件交给父类处理
return QLabel::event(e);
}