事件分發器
//事件分發器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);
}