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

【Qt】事件过滤器

事件过滤器

        在 Qt 中,⼀个对象可能经常要查看或拦截另外⼀个对象的事件,如对话框想要拦截按键事件,不让别的组件接收到,或者修改按键的默认值等。通过上⾯的学习,我们已经知道,Qt 创建了 QEvent事件对象之后,会调⽤QObject 的 event()函数 处理事件的分发。显然,我们可以在 event()函数 中实现拦截的操作。由于 event()函数是 protected 的,因此,需要继承已有类。如果组件很多,就需要重写很多个event()函数。这当然相当⿇烦,更不⽤说重写 event()函数还得⼩⼼⼀堆问题。好在 Qt 提供了另外⼀种机制来达到这⼀⽬的:事件过滤器。
事件过滤器是在应⽤程序分发到 event事件分发器 之前,再做⼀次更⾼级的拦截。

事件过滤器的⼀般使⽤步骤:
  1. 安装事件过滤器;
  2. 重写事件过滤器函数:eventfilter() 。

例子:拦截鼠标

(1)设置一个label,并设置一个边框

(2)在项⽬新添加⼀个类:Label,并将设置label提升再Label类中

(3)在 "mylabel.h" 中声明 ⿏标点击事件 和 事件分发器

(4)在 "mylabel.cpp" ⽂件中实现⿏标点击事件和事件分发器

(5)在 "widget.h" 头⽂件中声明事件过滤器函数

(6)在 "widget.cpp" ⽂件中实现事件过滤器的两个步骤

(7)运行程序

http://www.lryc.cn/news/434096.html

相关文章:

  • 字符串转换为整数、整数转换为字符串
  • 解决samba无权限创建文件问题
  • Ribbon快速了解
  • SpringBoot闲一品交易平台
  • 基于SpringBoot的物流管理系统
  • uniapp微信小程序开发踩坑日记:Pinia持久化报错Cannot read property ‘localStorage‘ of undefined
  • 负载均衡调度器--LVS
  • TinyWebSever源码逐行注释(五)_ http_conn.cpp
  • windows手工杀毒-寻找可疑进程之句柄
  • java开发后端
  • Redis 的标准使用规范之数据类型使用规范
  • 人工智能技术导论——基于产生式规则的机器推理
  • Apache Guacamole 安装及配置VNC远程桌面控制
  • 在Linux中从视频流截取图片帧(ffmpeg )
  • 使用脚手架来创建 express 项目
  • 单片机常用的软件架构
  • 服务器模型 Reactor 和 Proactor
  • 使用 Grype 检查 .jar 包中的漏洞
  • IDEA 常用插件推荐,美观又实用!
  • 浮点数精度问题
  • RK3576芯片在智能家居里中型智慧屏产品的应用方案分析
  • 什么是生成式 AI?
  • 计算机网络期末试题及答案
  • MySQL中DML操作(一)
  • Django 模板继承
  • 黑马点评17——多级缓存-Lua语法
  • 如何在Linux 上运行 SciChart WPF图表控件?
  • C--字符串函数处理总结
  • PLSQL-将一份excel数据导入到一张物理表(Oracle)
  • 【系统架构设计师】状态模式