自己使用事件过滤器的总结
1、应用给事件管理器分发事件,事件管理器根据事件类别将事件发给对应的类。
2、事件过滤器在应用和事件管理器之间拦截事件派发给事件管理器的事件,
这个操作会给事件过滤器传递两个参数,一个是Object(某个控件),一个是事件类型。
3、然后在下面使用if先判断控件,然后判断事件类型,然后执行操作。
4、执行完操作后,使用return true,表示事件只执行自定义的操作,这个事件不继续传递。
使用return false,表示事件执行完当前自定义的操作后,传递该事件给对应的事件管理器,
继续执行系统的其他事件。
写在函数声明里
bool eventFilter(QObject *obj, QEvent *event);
控件注册事件过滤器
ui->test_label->installEventFilter(this);
ui->connec_btn->installEventFilter(this);
eventFilter函数详细
bool Widget::eventFilter(QObject *obj, QEvent *event)
{if(obj == ui->test_label){if(event->type() == QEvent::MouseButtonPress){QMouseEvent *mouseevent = static_cast<QMouseEvent*>(event);qDebug() << "This is the label clicked";qDebug() << mouseevent->pos();return true; //return true 表示不传递事件}return false; //表示传递事件}if(obj == ui->connec_btn){if(event->type() == QEvent::MouseButtonPress){qDebug() << "QPushButton";return false; //传递剩余事件}}return false;
}