目录
一、exec() 简介:
1、说明:
事件循环,首先是一个无限 “循环”
程序在 exec() 里面无限循环,能让跟在 exec() 后面的代码得不到运行机会,直至程序从 exec() 跳出
其次,之所以被称为“事件”循环,是因为它能接收事件,并处理之。
当事件太多而不能马上处理完的时候,待处理事件被放在一个“队列”里,称为“事件循环队列”。
当事件循环处理完一个事件后,就从“事件循环队列”中取出下一个事件处理之。
当事件循环队列为空的时候,它和一个啥事也不做的永真循环有点类似,但是和永真循环不同的是,事件循环不会大量占用 CPU 资源。
事件循环的本质就是以队列的方式再次分配线程时间片。
嵌套
一个线程 可拥有 多个 事件循环
但,事件循环必须是嵌套的,一层套一层
子层的事件循环执行 exec() 的时候,父层事件循环就处于中断状态;即:只有当前 QEventLoop 被激活
虽然父层中断,但父层 GUI 界面处理不会卡住,如下一段解释
当子层事件循环跳出 exec() 后,父层事件循环才能继续循环下去<