1

两者都是带有事件循环的异步事件处理程序。这就是主线。

在 Qt 中,事件循环以 开头QApplication::exec(),而 io_service 以 开头io_service::run()。我的问题是在这一点之后。我可以在 Qt 而不是 io_service 中实现什么,反之亦然?有什么限制?什么时候更可取(忽略 Qt 的 GUI)?

更不重要的信息:在我脑海中引发这个问题的是我正在测试一些基于 C++ Qt 的程序,其中我的 GUI 逻辑位于从QObject. 出于我的测试目的,我一直在寻找将函数(如在 io_service 中)发布到 Qt 事件处理程序的方法(因此,QObject::connect()为简单起见绕过该事物),但随后意识到唯一的发布函数QApplication::postEvent();仅将 Qt 事件作为参数;不是函数、函子或 lambda!我没有问这个问题,因为这是一个明显的XY 问题,我仍在努力。

4

1 回答 1

0

我认为 QObject 和 io_service 之间没有任何重大区别。至于你的 XY 问题,QMetaObject::invokeMethod(obj, []{})接受一个 lambda。

于 2020-08-03T19:29:48.183 回答