Qt学习笔记(六) 事件处理
2011-02-11 17:12
363 查看
事件是由系统产生的用于响应所发生的各类事情。
首先需要分清楚“信号”和“事件”这两个概念。一般情况下,在使用窗口部件的时候,需要关注“信号”,而自己实现窗口部件时,则需要关注“事件”。
在
Qt中,事件的基类是
QEvent
,可以通过
QEvent
::type()获取事件的类型。事件是通过
QObject的
event()函数来通知的。在
Widget中的
event()已经实现了把绝大多数的常用事件传递给了特定的事件处理器,例如
paintEvent(),
keyPressEvent(),
mousePressEvent()等。我们只需要实现相应的事件处理器即可。
在
Qt中,通过安装事件过滤器,一个对象便可以监听另一个对象的
event()所接收到的事件。
首先要对目标对象调用
installEventFilter()来注册监视对象,然后在监听者的
eventFilter()便可截取发向被监听者
的事件了。在事件过滤器注册之后,发送给被监听者的事件会先发送给监听者,由监听者决定是否继续发送给被监听者。
Qt提供了
5个级别的事件处理和过滤方法:
1.
重新实现最常用的事件处理器,例如
paintEvent(),
keyPressEvent(),
mousePressEvent()
2.
重新实现
QObject::event()
3.
在
QObject中安装事件过滤器
4.
在
QApplication中安装事件过滤器
5.
重新实现
QApplication::notify()
首先需要分清楚“信号”和“事件”这两个概念。一般情况下,在使用窗口部件的时候,需要关注“信号”,而自己实现窗口部件时,则需要关注“事件”。
在
Qt中,事件的基类是
QEvent
,可以通过
QEvent
::type()获取事件的类型。事件是通过
QObject的
event()函数来通知的。在
Widget中的
event()已经实现了把绝大多数的常用事件传递给了特定的事件处理器,例如
paintEvent(),
keyPressEvent(),
mousePressEvent()等。我们只需要实现相应的事件处理器即可。
在
Qt中,通过安装事件过滤器,一个对象便可以监听另一个对象的
event()所接收到的事件。
首先要对目标对象调用
installEventFilter()来注册监视对象,然后在监听者的
eventFilter()便可截取发向被监听者
的事件了。在事件过滤器注册之后,发送给被监听者的事件会先发送给监听者,由监听者决定是否继续发送给被监听者。
Qt提供了
5个级别的事件处理和过滤方法:
1.
重新实现最常用的事件处理器,例如
paintEvent(),
keyPressEvent(),
mousePressEvent()
2.
重新实现
QObject::event()
3.
在
QObject中安装事件过滤器
4.
在
QApplication中安装事件过滤器
5.
重新实现
QApplication::notify()
相关文章推荐
- Qt学习笔记(三)事件处理
- Esper事件处理引擎_10_EPL 语法___View 窗口视图条件语法
- android学习笔记(17)广播事件处理进阶(注册方法)
- C#键盘事件处理(来源网上)
- [Java] ActionEvent 事件处理
- 解决 GridView“XXX”激发了未处理的事件“PageIndexChanging”
- Android界面之----自定义的Dialog,然后利用回调方法,在调用处,进行Dialog中各按钮的事件处理。
- UI笔记_事件处理
- Android按键事件处理流程 -- 从事件被派发到View层次结构的根节点DecorView开始分析
- js onload处理html页面加载之后的事件
- 我的Android应用学习笔记(三)回调事件处理和监听事件处理
- View事件处理机制
- 增强的CHtmlView类,在视图里处理HTML元素事件和交换数据 -[今天转几篇基础桌面技术文章]
- 比较特别的dean edward的javascript事件处理
- Esper事件处理引擎_16_EPL 语法_8_NamedWindow
- 事件处理程序WinProc
- Android基本功:事件处理
- java的事件处理机制
- 【转】增强的CHtmlView类,在视图里处理HTML元素事件和交换数据
- Android事件处理分析+Android事件处理 +Android输入事件流程