主要是前三种
bool MyWidget::eventFilter(QObject *obj, QEvent *e) { if(obj == ui->label_2) { QMouseEvent *env = static_cast<QMouseEvent *>(e); //判断事件 if(e->type() == QEvent::MouseMove) { ui->label_2->setText(QString("Mouse move:(%1, %2)").arg(env->x()).arg(env->y())); return true; } if(e->type() == QEvent::MouseButtonPress) { ui->label_2->setText(QString("Mouse Press:(%1, %2)").arg(env->x()).arg(env->y())); return true; } if(e->type() == QEvent::MouseButtonRelease) { ui->label_2->setText(QString("Mouse Release:(%1, %2)").arg(env->x()).arg(env->y())); return true; } else { return QWidget::eventFilter(obj,e); } } else { return QWidget::eventFilter(obj,e); } // if(obj == ui->pushButton) // { // } //和上面的类似 }