在程序分发事件前,利用事件过滤器进行拦截
步骤:
1.给空间安装事件过滤器installEventFilter(父亲)
2.重写eventFilter函数,返回值b,参数(QObject*, QEvent *)
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//安装过滤器
//1.给label控件安装事件过滤器
ui->label->installEventFilter(this);
//2. 重写事件过滤器的事件
}
Widget::~Widget()
{
delete ui;
}
bool Widget::eventFilter(QObject *obj, QEvent *event)
{
if(obj==ui->label){
if(event->type()==QEvent::MouseButtonPress || event->type()==QEvent::MouseButtonDblClick)//单击或者双击都会拦截
{
qDebug()<<"事件过滤器拦截了鼠标按下操作";
return true;
}
}
return QWidget::eventFilter(obj, event);
}