qt事件过滤器

1.事件和信号槽虽然功能相似但是不是一个东西,事件是QObject的枚举,更倾向于组件通用,信号槽则更有针对性,每个组件有不同的信号

2.事件过滤器是在事件响应前面加了一道过滤网,可以在这道过滤网中预处理,处理完后可以继续放过去继续处理,也可以不再处理,与返回值相关

3.事件过滤器只需要继承QObject类,只需要重写bool eventFilter(QObject *watched, QEvent *event)即可成为一个事件过滤器

4.事件过滤器的QEvent *event是输入的事件的基类,可以通过dynamic_cast转换以获得更多可执行方法

5.需要进行过滤的对象需要调用

void installEventFilter(QObject *filterObj);

方法就能绑定到事件过滤器,事件发生时先进入过滤器操作

接下来展示事件过滤器的使用方法,写一个拦截键盘输入的程序

1.新建继承QObject类filter,重写事件过滤器函数

bool eventFilter(QObject *watched, QEvent *event) override;
//参数为发生事件的对象类型和发生的事件

识别事件发生是否是输入栏,是否是按键按下,如果是按键按下则打印到调试框

widget中添加一个输入栏,创建过滤器对象调用其方法installEventFilter将对象添加到事件过滤器

执行,在输入框输入数据

可以看到输入框并没有数据,因为我们打印按键后返回的是true,代表事件已处理完成,不需要调用组件默认的事件处理。如果改为返回false

因为返回了false,系统判断未处理,所以输入栏执行了输入栏默认的事件处理函数

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值