您的位置:首页 > 编程语言 > Qt开发

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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: