事件过滤器
1.简介
事件过滤器是指在程序分发到event事件之前进行的一次高级拦截。
2.使用步骤
- 给控件安装事件过滤器
- 重写eventfilter事件
3.具体实现
3.1安装事件过滤器
代码:
//给label1安装事件过滤器
ui->label->installEventFilter(this);
3.2重写eventfilter事件
代码:
widget.h
//重写事件过滤器的事件
bool eventFilter(QObject *,QEvent *);
widget.cpp
//重写eventfilter事件
bool Widget::eventFilter(QObject *obj,QEvent *e)
{
if(obj==ui->label)
{
if(e->type()==QEvent::MouseButtonPress)
{
QMouseEvent *ev=static_cast<QMouseEvent *>(e);
QString str=QString("事件过滤器中,鼠标按下了 x=%1 y=%2 globalX=%3 globalY=%4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
qDebug()<<str;
return true;//true代表用户自己处理这个事件,不向下分发
}
}
//其他默认处理
return QWidget::eventFilter(obj,e);
}