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我们没有做任何的修改,这样其他事件还是会去找事件处理函数进行处理
}
//这样就可以在调用事件处理函数之前,对一些事件进行特殊处理。
相关推荐
郝学胜-神的一滴3 小时前
Qt 入门 01-01:从零基础到商业级客户端实战
开发语言·c++·qt·程序人生·软件构建
largecode4 小时前
打电话时,怎么让号码显示自己的品牌名称?办理号码认证服务流程
笔记·百度·微信·课程设计·微信公众平台·facebook·新浪微博
ytttr8734 小时前
基于 Qt 的多线程串口调试工具
qt
米罗篮5 小时前
DSU并查集 & 拓展欧几里得-逆元
c++·经验分享·笔记·算法·青少年编程
郑同学的笔记5 小时前
【Qt教程29】Qt5和Qt6版本对比
开发语言·qt
基德爆肝c语言5 小时前
Qt 主窗口全家桶:菜单栏、工具栏、状态栏与对话框完全指南
开发语言·qt
噜噜噜阿鲁~5 小时前
python学习笔记 | 10.0、面向对象编程
笔记·python·学习
hssfscv6 小时前
软件设计师下午题训练1-3题+2019上上午题错题解析 练习真题训练13
笔记·设计模式·uml
哆哆啦007 小时前
使用 Obsidian + GitHub Actions + GitHub Pages 搭建内容发布流
数据库·笔记·github·obsidian
BatyTao8 小时前
QT Creator快速创建主项目-子项目
qt