QT
Event以及 EventFilter 事件处理是本文要介绍的内容,详细内容如下,先来看内容。Event和
Event Filters:
1、手动发送事件流程:
(1)构造自己的事件对象:
QEvent *evt=newQEvent( QEvent::Close );
(2)发送给指定的对象:
QApplication::sendEvent(this, evt );
2、定制某个控件的事件处理:
(1)确定需要对哪些控件的哪些事件, 通常的 close以及 key 和 keyboard 事件;
(2)重写该对象的 event() 函数; 3、事件过滤流程: (1)确定自己需要过滤处理哪些对象的那些事件; (2)构造自己的事件过滤类: 重写该类的 eventFilter 函数;
(3)在主程序中实例化一个过滤类对象; (4)调用该过滤类对象的 installEventFilter( receiver, QEvent
*event), 以在目标对象上安装该过滤器。
在 Qt 中, event 被建模成派生自abstract QEvent 类的对象,
用来表示在应用程序中发生的事件,或是应用程序需要处理的外部活动产生的事件.
Events 可以被任一 QObject 派生的子类实例对象接收和处理, 但他们是关联到特定控件的. 本文档描述 event
在典型应用程序中是如何发送及处理的.
How Events are Delivered
Event Types
Event Handlers
Event Filters
Sending Events
event 如何发送
通常情况下,当一个事件发生的时候, Qt 通过构造一个合适的 QEvent子类对象来表示事件的发生, 然后将该事件对象发送给特定的
QObject对象( 或其子类实例对象), 通过调用该 QObject 的 event() 函数. 这个 event()
函数不会对事件本身进行处理, 而是首先检查所接受到event 的类型, 然后根据 event 的类型来调用相应的 event
handler, event handler 在处理完 event 之后会返回一个bool值表示 该
event是被接受了,还是被忽略了。
某些事件, 例如 QMouseEvent 和 QKeyEvent, 来自于窗口系统; 某些, 例如 QTimerEvent,
来自于其他的事件源; 某些, 来自于应用程序本身.
Ev