一个事件由一个特定的QEvent子类来表示,如QMouseEvent、QKeyEvent

处理一个事件的方法:

方法一:重新实现部件的paintEvent、mousePressEvent等事件处理函数。 最常用,不过只能处理特定部件的特点事件。

方法二:在对象上安装事件过滤器。使用事件过滤器可以在一个界面类中同时处理不同子部件的不同事件。  也比较常用

方法三:重新实现event函数,类似于第一种,但可以处理多种不同事件。

Qt 中,事件的传递顺序是:

1. 先进入事件过滤器。

2. 然后通过事件过滤器可以判断是哪个部件发生的事件。

3. 再执行该焦点部件的event()函数。

4. 最后是焦点部件的事件处理函数,如keyPressEvent()。

5. 如果焦点部件忽略了该事件(event->ignore()),那么执行父部件的事件处理函数。

注意:event函数和事件处理函数是在焦点部件内重新定义的,而事件过滤器则是在焦点部件的父部件中重新定义。

在重写事件处理函数的时候,有时候传递event参数没有用到,这时编译器会报警告,加上“Q_UNUSED(event);” 这样就不会报警告了。

最新文章

  1. java多线程操作
  2. 基于webrtc的资源释放问题(一)
  3. WinForm设置右键菜单
  4. to_number,Extract oracle的关键字
  5. python中列表 元组 字符串如何互相转换
  6. 10.30Daily Scrum
  7. VS2008的默认打开重置为VS2008
  8. HW7.9
  9. ora-01589
  10. ubuntu终端命令
  11. GDAL库学习笔记(1):无缝拼接Google卫星图
  12. forEach用法介绍
  13. RSA加密算法 C++实现
  14. MyEclipse2016添加外部的maven插件
  15. Ubuntu18.04版本设置root账户
  16. php 腾讯地图和百度地图的相互转换
  17. Java基础学习-Path环境变量的配置
  18. day7 笔记
  19. 批量输出dwg文件中的文本
  20. LDAP summary-- Python ldap

热门文章

  1. Centos7 通过SSH使用密钥实现免密登录
  2. 一 JAVA整体概念以及安装部署
  3. JVM 之:Java 内存区域与内存溢出
  4. linux 命令:chmod权限设置命令
  5. vs2010开发环境恢复--(mysql,数据文件可直接拷贝,并可用navicat直接管理)
  6. 关于有时候导入maven项目时候报错(有红色叹号,类中导入的包提示"the import java.util cannot be resolve,")
  7. Python网络爬虫-requests模块
  8. selenium除错
  9. 关于ie6下png背景透明
  10. 触屏设备上的多点触碰检测C++代码实现