
事件分发器——event()函数
事件过滤
事件进入窗口之前被拦截 eventFilter
![]()
#include "mywidget.h"
#include "ui_mywidget.h"
#include <QDebug>
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)
{
ui->setupUi(this);
// 给MyLabel 安装事件过滤器
// 参数 谁来过滤label 的事件
ui->mylabel->installEventFilter(this);
ui->label_2->installEventFilter(this);
}
MyWidget::~MyWidget()
{
delete ui;
}
void MyWidget::mousePressEvent(QMouseEvent *)
{
qDebug() << "+++++++++++++";
}
bool MyWidget::eventFilter(QObject *obj, QEvent *e)
{
// 判断对象
if (obj == ui->mylabel) {
// 过滤事件
if (e->type() == QEvent::MouseMove)
{
ui->mylabel->setText("++++++++++");
return true;
}
}
if (obj == ui->label_2) {
if (e->type() == QEvent::MouseMove)
{
ui->label_2->setText("**********");
return true;
}
}
// 执行默认处理
return QWidget::eventFilter(obj,e);
}
mywidget.cpp