原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。
前几节说了投递事件、处理事件和过滤事件,本节主要说说发送事件,没有发送事件,前面几节说的内容就没用了。
Qt中,发送事件仅有两个接口:
1 QCoreApplication::sendEvent()
2 QCoreApplication::postEvent()
sendEvent:立即发送事件到指定对象,事件过滤器或者接收者处理完毕后返回。
postEvent:将事件对象加入到事件队列中,当Qt的主事件循环运行时,Qt框架分发所有的事件,这个过程中可能会有些优化,比如Qt会将多个窗口的resize事件合并为一个事件处理;还有典型的重绘事件,也是会合并的。
postEvent可以用在对象初始化的过程中,通常对象完成初始化之后马上调用了postEvent,这种情况下要确保成员变量一定要在postEvent之前完成初始化。