事件分发器
//事件分发器bool event(QEvent* e);
//事件分发器::用途 分发事件
bool MyLabel::event(QEvent* e)
{if(e->type() == QEvent::MouseButtonPress){//如果是鼠标摁下 拦截事件 不向下分发QMouseEvent* ev = static_cast<QMouseEvent*>(e);QString str = QString("event中鼠标按下 x = %1, y = %2").arg(ev->x()).arg(ev->y());qDebug() << str;return true;}//其他事件 抛给父类return QLabel::event(e);
}
事件过滤器
第一步给控件安装事件过滤器
第二步重写过滤器事件
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").arg(ev->x()).arg(ev->y());qDebug() << str;return true;}}return QWidget::eventFilter(obj, e);
}