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我们没有做任何的修改,这样其他事件还是会去找事件处理函数进行处理
}
//这样就可以在调用事件处理函数之前,对一些事件进行特殊处理。
相关推荐
小庞在加油2 小时前
从qmake到CMake+VSCode:Qt项目现代化迁移与AI提效实战指南
vscode·qt·ai·ai工具
智者知已应修善业3 小时前
【用74LS151的实现(16序列信号发生器)】2024-6-1
驱动开发·经验分享·笔记·硬件架构·硬件工程
小短腿的代码世界4 小时前
Qt定时器高精度架构:从QTimer源码到纳秒级定时调度
数据库·qt·架构
尘中远4 小时前
Qt高性能绘图库QIm——实现二维三维科学绘图
开发语言·qt·信息可视化
是上好佳佳佳呀4 小时前
【LangChain|Day04】RAG 全流程基础笔记:Document 、 Loader 和 Splitter
笔记·langchain·rag
俊男无期4 小时前
【无标题】
笔记·其他
m0_719084114 小时前
es我的笔记
大数据·笔记·elasticsearch
hhcgchpspk6 小时前
xss漏洞学习笔记
笔记·学习·网络安全·xss
nnsix6 小时前
Unity 动态批处理、静态批处理、GPU Instaning、SRP Batcher 笔记
笔记·unity·单一职责原则
情绪总是阴雨天~6 小时前
OCR光学字符识别技术:完整原理与实战学习笔记
笔记·学习·ocr