QT中的界面跳转,事件处理过程思考

来源:互联网 发布:摇钱树网吧计费软件 编辑:程序博客网 时间:2024/05/16 17:22

问题:

MainWindow中有一个按钮Button, 一个定时器Timer, Timer5秒后,并跳转到其他Widget。按Button时,会弹出一个Dialog,并提示。 若在5秒时,按下Button按钮,此时Timer也被触发。此时Widget和Dialog会有冲突。

分析:

上面问题实际上是事件处理并发问题。对于一个Window来说,它能处理多种事件例如ShowEvent, TimeroutEvent,以及其他信号槽机制中产生的事件 等。那么,上面的Dialog被弹出时,MainWindow中的Timer若没有被停止时,Widget还是有可能被弹出的。 虽然Dialog中模态属性使得它使用一个新的QEventLoop来阻塞外部的QEventLoop.  两个QEventLoop是属于嵌套的关系,Timer的事件还是可以通过内部QEventLoop来传递到MainWindow中的,从而能够被处理。 


那么有没有一种方法能够让Dialog弹出时,不然MainWindow中的Timer事件被忽略或者不想被处理呢?


需要完整浏览事件的处理过程(包括自发事件, 应用事件例如Timer和信号槽机制)



0 0
原创粉丝点击