Qt中事件处理的顺序
2010-07-08 19:37
309 查看
1.事件首先由Qt的ServerApplication去接收来自于外部或内部的一些行为,鼠标点击,键盘输入,时钟事件等,分析并决定送往对应的对象去处理(内部管理机制,如有机会另文分析),最后会调用bool QCoreApplication::notify ( QObject * receiver, QEvent * event ) [virtual]去处理,当然这个是虚函数,你可以在子类去重新实现它 。
2.在notify(…)中,在发给对应的接收者前,会先把消息送给QApplication。所以如果想在你界面的Widget前先处理那些事件,那么你可以给QApplication对象installEventFilter,然后在对应的eventFilter()里先把这些事件都给过一遍,该和谐的先和谐掉。
3.如果QApplication没有处理那些事件,然后就是交给事件接收对象了。在这个对象接收前,也可以为这对象加一个事件过滤器,同样是installEventFilter,不过它的调用者是事件接收者(也就是前面那个reveiver参数),而不是QApplication/QCoreApplication.
4.经过了前面两级过滤后,如果事件还没被处理(前面函数的返回值为false),那么就会进入接收者的event()函数,你可以里面根据事件的不
同类型尽情处理。
5.默认event()函数根据事件类型会调用不同的事件处理函数,类似mouseEvent(),keyEvent()去分别处理他们。
2.在notify(…)中,在发给对应的接收者前,会先把消息送给QApplication。所以如果想在你界面的Widget前先处理那些事件,那么你可以给QApplication对象installEventFilter,然后在对应的eventFilter()里先把这些事件都给过一遍,该和谐的先和谐掉。
3.如果QApplication没有处理那些事件,然后就是交给事件接收对象了。在这个对象接收前,也可以为这对象加一个事件过滤器,同样是installEventFilter,不过它的调用者是事件接收者(也就是前面那个reveiver参数),而不是QApplication/QCoreApplication.
4.经过了前面两级过滤后,如果事件还没被处理(前面函数的返回值为false),那么就会进入接收者的event()函数,你可以里面根据事件的不
同类型尽情处理。
5.默认event()函数根据事件类型会调用不同的事件处理函数,类似mouseEvent(),keyEvent()去分别处理他们。
相关文章推荐
- 用事件队列解决GUI的操作顺序问题(Qt中处理方法)
- Qt中事件处理的顺序
- Qt中事件处理的顺序
- Qt中事件处理的顺序
- Qt-事件处理-鼠标事件
- QT窗口拖拽功能简单应用(处理dragEnterEvent和dropEvent事件,不同的事件有不同的信息,比如mimeData)
- Qt事件处理机制
- 【Qt学习笔记】4.事件处理
- Qt获得焦点和失去焦点处理事件 (Focus事件)
- Qt事件处理机制整个流程--以鼠标在一个窗口中点击为例
- 【转】解读Qt 事件处理机制(上篇)
- SAP的Selection屏幕的事件处理顺序
- Qt事件处理(五)
- Qt之事件过滤器 截获消息通知 自定义消息处理事件解析.
- Qt浅谈之十八:GraphicsView框架事件处理
- Qt浅谈之十八:GraphicsView框架事件处理
- Android键盘和触摸事件先后顺序处理
- Qt中使用ActiveX(二)【方法调用和事件处理】
- Qt中事件分发源代码剖析(一共8个步骤,顺序非常清楚:全局的事件过滤器,再传递给目标对象的事件过滤器,最终传递给目标对象)
- Qt 处理键盘按键事件:只能输入字母 keyPressEvent