Qt提供了5种事件处理和事件过滤的方法:

1、重写事件处理器函数

  这是大部分情况最常用的一种,如重写 paintEvent()、mousePressEvent()、keyPressEvent() 等事件处理器虚函数。

2、重写 QObject::event() 函数

  通过重写 event() 函数可以在事件到达特定的事件处理器之前处理它们。这种方式常用于拦截 Tab 键的处理(Tab 键默认的意义是焦点切换,但是对于某些控件这个可能要用来完成文本缩进之类的工作),以及没有事件处理器的不常见事件如 QEvent::HoverEnter 。当重写 event() 时,对于没有处理的事件必须调用基类的 event() 函数。

3、安装事件过滤器

  需要被监视的目标对象调用 installEventFilter() 注册监视对象后,被监视目标的所有事件都会先被监视对象的过滤器 eventFilter() 拦截,可以在这个函数里面对监视目标的某个事件做特殊处理。一个对象可以安装多个事件过滤器,事件过滤器的执行顺序和安装顺序相反。会从最近安装的那个 eventFilter() 开始执行。

4、在 QApplication 对象中安装事件过滤器·

  一旦在 qApp(全局唯一的运用程序对象) 中注册了事件过滤器,则运用程序中所有对象的每一个事件在发送到其他事件过滤器之前,都会被注册的那个监视器拦截。这对于调试非常有用。(就是定义一个 QObject 类的子类,重写 eventFilter() 函数,实例化一个过滤器对象 filter,然后 qApp->installEventFilter(filter) )

5、继承 QApplication 重写 notify() 函数

  Qt 是通过调用 QApplication::notify() 函数来发送事件的,重写这个函数即可在事件过滤器之前拦截所有事件。

最后,更多信息Qt帮助文档的Qt Event System章节说明:

最新文章

  1. Windows操作技巧 之二(持续更新)
  2. 170106、用9种办法解决 JS 闭包经典面试题之 for 循环取 i
  3. Html概要及示例(一)
  4. JavaScript给onclick事件赋值,动态传参数实例辩错
  5. Fire uva 11624
  6. HealthKit开发教程之HealthKit的辅助数据
  7. MySQL安装图解教程
  8. Swift-07-析构器deinit
  9. CSS中position:fixed的用法
  10. 总结XX网app中webapp常见的前端错误。
  11. Sicily 1282. Computer Game
  12. CentOS 设置 pptpd VPN 步骤
  13. AWR報告詳解
  14. Asp.Net MVC 中JS通过ajaxfileupload上传图片获取身份证姓名、生日、家庭住址等详细信息
  15. 【原创】Linux基础之curl
  16. (4.9)mysql备份还原——binlog查看工具之mysqlbinlog的使用
  17. extern的使用详解(多文件编程)——C语言
  18. Corrupted Metadata/failed to mount /sysroot
  19. 进阶之路(中级篇) - 018 基于arduino的简易版智能衣架
  20. XToDo未完成内容标记管理器

热门文章

  1. csp201503-1(矩阵逆时针九十度旋转)
  2. centos6 编译安装 mysql5.6----------centos7编译安装MySQL5.7
  3. 宝塔Linux定时shell
  4. 钉钉获取群openConversationId方式以及企业内部机器人发送群消息
  5. linux开机出现grub界面
  6. xshell 恢复窗口布局
  7. GUI程序设计——班级信息收集系
  8. Burp学院-OS命令注入
  9. MSSQL执行超大.sql脚本
  10. HANDLE和HMOUDLE、HWND讲解