Qt 中的事件循环是什么?

Aqu*_*irl 8 c++ qt event-loop qapplication

我已了解以下有关 QApplicationexec功能的信息:

QApplication exec 启动主事件循环。它启动 GUI。它处理信号并在接收到它们时调用适当的时隙。它一直等到 exit 被调用并返回在 exit 中设置的值。

现在,当我们说事件循环时,是否意味着在 Qt 的内部代码中运行了一些 while 循环,并且在那个 while 循环中编写了处理信号和槽的方法?

MrE*_*Sir 7

现在,当我们说事件循环时,是否意味着在 Qt 的内部代码中运行了一些 while 循环,并且在那个 while 循环中编写了处理信号和槽的方法?

从某种意义上说,是的。如今,大多数软件都坐着等待事件——用户输入、网络流量、计时器事件、传感器等——并做出相应的响应。

这不是 Qt 特有的。这是一种常见的设计模式,从 Windows 到 Android 再到 Arduino,随处可见。

  • 这不仅是“在某种意义上”,而且是字面上的真实。while 循环可以在 $QTDIR/src/corelib/kernel/qeventloop.cpp 的第 203 行,在 QEventLoop::exec() 中找到: while (!d->exit.loadAcquire()) processEvents(flags | WaitForMoreEvents | EventLoopExec ); (20认同)