Qt笔记 事件分发

我们知道,事件的产生和处理主要分为四个部分,事件产生,事件过滤,事件分发以及事件处理。

实际上,在事件分发和事件处理之间,事件分发器会调用一个函数叫做event,这个event所代表的含义就是我们用户要处理的这个事件,多数情况下我们对事件做任何处理,而是由事件处理函数来进行处理。当然我们也可以设置event函数来拦截事件,这样就不会分发到对应的事件处理函数上,而是在event函数就处理完了。一般来说,我们不推荐这样使用,但是我们得知道。

总的来说,widget的event方法就是在处理函数调用之前进行拦截,可以针对一些事件在处理进行特殊处理。

cpp 复制代码
//在widget.h的文件下进行声明
#include <QEvent>
protected:
    bool event(QEvent *event);



//在widget.cpp的文件下进行定义
bool Widget::event(QEvent *event)
{
    if(event->type() == QEvent::MouseButtonPress)//拦截鼠标点击事件
    {
        qDebug() << "鼠标按键被按下";
        return true;
    }
    return QWidget::event(event);//对于其他的事件,我们交给父类的event来处理,父类的event我们没有做任何的修改,这样其他事件还是会去找事件处理函数进行处理
}
//这样就可以在调用事件处理函数之前,对一些事件进行特殊处理。
相关推荐
ouliten15 分钟前
C++笔记:偏现代C++日志系统
c++·笔记
JdSnE27zv21 分钟前
EF Code First学习笔记:数据库创建
数据库·笔记·学习
雪的季节22 分钟前
Qt 自定义表头
开发语言·qt
xian_wwq25 分钟前
【学习笔记】「大模型安全:攻击面演化史」第 06 篇-红队方法论
笔记·学习·ai安全
很楠爱上30 分钟前
Vue3 快速上手 — 精华笔记
笔记
凉、介36 分钟前
深入理解 ARMv8-A|Application Binary Interface (ABI)
c语言·笔记·学习·嵌入式·arm
lcj251140 分钟前
【stack、queue、deque、priority_queue】C++ 栈 / 队列 / 优先级队列全解析!手撕实现 + 二叉树层序遍历(附源码)
开发语言·c++·笔记
zhangakirn1 小时前
Systems Biology Part 1学习笔记
笔记·学习
艾莉丝努力练剑1 小时前
【QT】系统相关:QT文件
linux·服务器·开发语言·网络·qt·tcp/ip·计算机网络
Cloud_Shy6181 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第四章 Item 25 - 26)
开发语言·人工智能·经验分享·笔记·python·学习方法