Qt事件处理的几种方式
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章节说明:
Qt事件处理的几种方式的更多相关文章
- Android事件处理的2种方式:监听器与回调
android组件的事件处理有2种方式: 1.基于监听器的事件处理方式:先定义组件,然后为组件设定监听器. 详见http://blog.csdn.net/jediael_lu/article/deta ...
- JavaScript事件处理的三种方式(转)
一.什么是JavaScript事件? 事件(Event)是JavaScript应用跳动的心脏,也是把所有东西粘在一起的胶水,当我们与浏览器中Web页面进行某些类型的交互时,事件就发生了. 事件可能是用 ...
- Android ActionBar Home按钮返回事件处理的两种方式
今早无聊查看了一下android官方文档,最近对ActionBar很感兴趣,它确实对我们的日常开发起到了很便捷的作用. 对于通过点击ActionBar的Home按钮返回,以前我只知道有一种方式:也就是 ...
- 事件处理之一:两种方式:监听器与回调 分类: H1_ANDROID 2013-10-31 10:26 3250人阅读 评论(0) 收藏
Android组件的事件处理有2种方式: 1.基于监听器的事件处理方式:先定义组件,然后为组件设定监听器. 详见http://blog.csdn.net/jediael_lu/article/deta ...
- QT 焦点事件(4种方式的解释,还有委托焦点)
1.setFocusPolicy(...)设置获得焦点的方式 Qt::TabFocus 通过Tab键获得焦点 Qt::ClickFocus 通过被单击获得焦点 Qt::StrongFocus 可通过上 ...
- 使用Qt设计师文件的3种方式
使用Qt设计师设计的.ui界面文件是XML文件,有3种方式在PyQt中使用,本文将通过实例进行讲解. 使用PyQt中如何结合Qt设计师进行开发中的例子.点击按钮修改标签的内容. 1. 直接使用ui文件 ...
- 基于Qt有限状态机的一种实现方式和完善的人工智能方法
基于Qt有限状态机的一种实现方式和完善的人工智能方法 人工智能在今年是一个非常火的方向,当然了.不不过今年,它一直火了非常多年,有关人工智能的一些算法层出不穷.人工智能在非常多领域都有应用,就拿我熟悉 ...
- QT开发(十二)——QT事件处理机制
一.QT事件简介 QT程序是事件驱动的, 程序的每个动作都是由内部某个事件所触发.QT事件的发生和处理成为程序运行的主线,存在于程序整个生命周期. 常见的QT事件类型如下: 键盘事件: 按键按下和松开 ...
- .NET 实现并行的几种方式(四)
本随笔续接:.NET 实现并行的几种方式(三) 八.await.async - 异步方法的秘密武器 1) 使用async修饰符 和 await运算符 轻易实现异步方法 前三篇随笔已经介绍了多种方式.利 ...
- SWT组件添加事件的四种方式
在我们CS日常开发过程中会经常去为组件添加事件,我们常用的为AWT与SWT.SWT的事件模型是和标准的AWT基本一样的.下面将按照事件的四种写法来实现它. 一.匿名内部类的写法 new MouseAd ...
随机推荐
- Vue项目使用/deep/报错:SassError: expected selector解决方案--亲测有效
项目npm run dev报错如下: 解决方法: 尝试用 ::v-deep 替换 /deep/ ,成功解决了问题. 效果如下图所示(完美解决~) 某些预处理器(例如Sass)可能无法>>& ...
- python读取图片相关属性
背景:工作中用到一些基础的图片处理的任务,比如获取图片宽高.获取图片的旋转角度等等图片属性,都是比较零散的,这里简单做个记录备忘 这里用到的库exifread,安装 pip isntall exifr ...
- 安全测试-WEB安全渗透测试基础知识(一)
1.1. Web技术演化 1.1.1. 静态页面 在互联网最初开始的时候,Web网站的主要内容是静态的,由文字和图片组成,制作和表现形式也是以表格为主.当时的用户行为也非常简单,仅仅是浏览网页. ...
- iview-cli 设置跨域代理服务器
1.打开 webpack.dev.config.js 2.//设置跨域代理 devServer: { historyApiFallback: true, hot: true, inline: true ...
- echart lengend 选中事件
根据列选项 来改变echart y轴数值 前4个指标 甲方要求 95~100 第5个 要求 0~10如果混合起来 就是 0~100 这时的我 不由的破口大骂!!!但是 该干的活还是得干 干货如下:
- FlyMcu烧录提示写入出错在初始化:连接,耗时3437延秒
取消勾选RamIsp的选项就可以了
- [iOS] 随手记录 IDFA 的一些相关内容
IDFA IDFA,广告标识符,类似于这一台设备的唯一性标识符,一般提供给第三方去做一些广告的关联. 但如果用户完全 重置系统,或者 "还原位置与隐私" 这个广告标示符会重新生成 ...
- linux安装oracle客户端
下载客户端软件 客户端下载地址 链接:https://pan.baidu.com/s/1StXjSjQ_6wRuwj4tewRlaA 提取码:8ynu sqlldr工具 链接:https://pan. ...
- jsp 格式化日期
第一步,引入工具包: <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %&g ...
- 关于nginx隐藏index.php入口文件注意事项
最近项目用的是nginx服务,apache怎么隐藏入口不赘述,官方文档有介绍,Nginx隐藏官方文档这样说的: 实践中,这样是不对的,应该在网站对应的vhost.conf中配置: server { l ...