C++ Qt事件处理程序和boost ASIO';s io_服务?
两者都是带有事件循环的异步事件处理程序。这是底线 在Qt中,事件循环以C++ Qt事件处理程序和boost ASIO';s io_服务?,c++,qt,asynchronous,boost,asio,C++,Qt,Asynchronous,Boost,Asio,两者都是带有事件循环的异步事件处理程序。这是底线 在Qt中,事件循环以QApplication::exec()开始,而io_服务以io_服务::run()开始。我的问题是在这一点之后我可以在Qt中实现哪些功能,而不是在io_服务中实现哪些功能,反之亦然?限制是什么?什么时候更可取(忽略Qt的GUI)? 更不重要的信息:在我的脑海中引发了这个问题的是我正在测试一些基于C++的QT程序,其中我的GUI逻辑来自于代码< QObjult< /C>。出于测试目的,我一直在寻找将函数(如io_服务中的函数
QApplication::exec()
开始,而io_服务以io_服务::run()开始。我的问题是在这一点之后我可以在Qt中实现哪些功能,而不是在io_服务中实现哪些功能,反之亦然?限制是什么?什么时候更可取(忽略Qt的GUI)?
<强>更不重要的信息:在我的脑海中引发了这个问题的<强>是我正在测试一些基于C++的QT程序,其中我的GUI逻辑来自于代码< QObjult< /C>。出于测试目的,我一直在寻找将函数(如io_服务中的函数)发布到Qt事件处理程序的方法(为了简单起见,绕过
QObject::connect()
这件事),但后来意识到唯一的发布函数QApplication::postEvent()代码>,仅将Qt事件作为参数;不是函数、函子或lambda!我没有问这个问题,因为这是一个显而易见的问题,我还在努力解决这个问题。我认为QObject和io_服务之间没有什么重大区别。至于您的XY问题,QMetaObject::invokeMethod(obj,[]{})
接受lambda。我认为QObject和io_服务之间没有什么大的区别。对于XY问题,QMetaObject::invokeMethod(obj,[]{})
接受lambda