当前位置: 首页 > news >正文

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,系统判断未处理,所以输入栏执行了输入栏默认的事件处理函数

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《机器学习》数据预处理 删除、替换、填充 案例解析及实现
  • zabbix6.4连接钉钉发出警告
  • 【计算机网络】TCP协议(下)
  • 基于stm32f407的pwm输出以及初始化(84mhz)
  • 电影、视频拍摄基础知识 | 所有岗位及职能描述、任职要求速览
  • LC1860C 后来怎么样了
  • 浅谈人工智能之python调用通义千问API
  • 深入解析MySQL索引的使用及优化
  • gitlab 启动/关闭/启用开机启动/禁用开机启动
  • 前端HTML基础笔记
  • 6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)
  • 8. GIS数据分析师岗位职责、技术要求和常见面试题
  • 深度学习中常见的权重参数初始化方法
  • argodb自定义函数读取hdfs文件的注意点,避免FileSystem已关闭异常
  • C++手记
  • [LeetCode] Wiggle Sort
  • canvas 五子棋游戏
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript对象详解
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • MaxCompute访问TableStore(OTS) 数据
  • MobX
  • Netty源码解析1-Buffer
  • Promise面试题,控制异步流程
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Redux系列x:源码分析
  • sublime配置文件
  • vuex 学习笔记 01
  • windows下mongoDB的环境配置
  • 从重复到重用
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 服务器之间,相同帐号,实现免密钥登录
  • 你真的知道 == 和 equals 的区别吗?
  • 入门到放弃node系列之Hello Word篇
  • 山寨一个 Promise
  • 设计模式 开闭原则
  • 深度学习入门:10门免费线上课程推荐
  • linux 淘宝开源监控工具tsar
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #ifdef 的技巧用法
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (JS基础)String 类型
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (三)终结任务
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)机器学习的数学基础(1)--Dirichlet分布