您的位置:首页 > 文旅 > 美景 > qt事件过滤器

qt事件过滤器

2024/12/27 19:23:16 来源:https://blog.csdn.net/m0_54442739/article/details/142031482  浏览:    关键词: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,系统判断未处理,所以输入栏执行了输入栏默认的事件处理函数

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com