Qt事件处理的五个层次

来源:互联网 发布:大数据 数据获得 编辑:程序博客网 时间:2024/05/16 06:52
 

Qt事件处理的五个层次

标签: qt
 2448人阅读 评论(0) 收藏 举报
 分类:

我是个Qt新手,一直对Qt事件处理的流程不是太清楚,看了这篇文章(见http://devbean.blog.51cto.com/448512/231861),然后经过自己的思考,把Qt事件处理的五个层次、同时也是Qt时间处理的流程画了出来。若有不对请批评指正,不胜感激!

层次图(即事件处理流程图)及其说明如下:





说明如下:

sendEvent()会把event直接发送给QCoreApplication的notify(),postEvent()把event追加到事件队列中最终也要调用notify(),notify()把事件分发给参数中的receiver,如果receiver安装了eventFilter,那么event会发给定义这个事件过滤器的监控者,如果这个event没有被过滤,那么这个event会被传给receiver的event()函数,event()函数再把这个event传给与其相应的事件处理函数(诸如keyPressEvent()之类的函数)。这些事件处理函数这才是真正响应event的函数,它们才是真正干活的,到这里算是处理完了。

这个过程中,权限是由大到小的,不算sendEvent()和postEvent和事件循环,notify具有最大控制权,因为它最先见到event,我们可以重写notify()开始的这个处理链上的函数来响应event,从而进行相应的操作。


整个流程中,只有postEvent()和最后的事件处理函数是void类型,其它函数都是bool型。

0 0
原创粉丝点击