- 先执行全局过滤器
- 上一步返回false 则 执行 receiver 上注册的事件过滤器
- 上一步返回false 这 执行 receiver 的 event 事件处理函数,根据具体事件类型执行 具体事件处理器函数 如:MousePressEvent(QEvent* e)
- 根据上一步receiver 的event() 返回值 res 和 MousePressEvent中是否调用了 e->accept() 来决定后续处理。如果
res为true 且 执行了 e->accept() 则事件处理完成,中断返回。
- 如果步骤5中res为false 或者 执行的是 e->ignore() 则 将事件传递给 组件的父组件 重复从 步骤 1 开始的所有流程。

class QtWidgetsApplication1 : public QMainWindow
{
Q_OBJECT
public:
QtWidgetsApplication1(QWidget *parent = nullptr);
~QtWidgetsApplication1();
private:
Ui::QtWidgetsApplication1Class ui;
public slots:
void changelabel();
};
QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QObject::connect(ui.pushButton, SIGNAL(pressed()),this, SLOT(changelabel()));
}
void QtWidgetsApplication1::changelabel()
{
ui.label->setText(QString("clicked"));
}
class GlobalEventFilter : public QObject
{
public:
virtual bool eventFilter(QObject* watched, QEvent* event) override
{
qDebug() << "watched : " << watched << " event : " << event->type();
return false;
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QtWidgetsApplication1 w;
a.installEventFilter(new GlobalEventFilter());
w.show();
return a.exec();
}










【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】