Sistema de eventos de aprendizaje del módulo Qt Creator (filtro de eventos)
Para el filtrado de eventos, la función event () también se puede realizar, pero solo una a la vez, por lo que Qt tiene un filtro de eventos, que puede filtrar varios controles a la vez.
Mira el ejemplo directamente:
bool Widget::eventFilter(QObject *obj,QEvent *ev){
QMouseEvent *env = static_cast<QMouseEvent *>(ev);
if(obj==ui->label_2){
if(ev->type()==QEvent::MouseMove)
{
ui->label_2->setText(QString("Mouse move:(%1,%2)").arg(env->x()).arg(env->y()));
return true;
}
if(ev->type()==QEvent::MouseButtonPress)
{
ui->label_2->setText(QString("Mouse press:(%1,%2)").arg(env->x()).arg(env->y()));
return true;
}
if(ev->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,ev);
}
}
else
{
return QWidget::eventFilter(obj,ev);
}
}