C++ Qt跨线程调用

C++ Qt跨线程调用,c++,qt,multithreading,C++,Qt,Multithreading,我有一个Qt/C++应用程序,带有常用的GUI线程和一个网络线程。网络线程正在使用一个外部库,它有自己的基于select()的事件循环。。。所以网络线程没有使用Qt的事件系统 目前,当各种事件发生时,例如成功连接时,网络线程只会发出()s信号。我认为这可以正常工作,因为signals/slots机制为GUI线程正确地发布了信号 现在,我需要网络线程能够调用GUI线程来提问。例如,网络线程可能要求GUI线程请求建立一个对话框,请求密码 有人知道这样做的合适机制吗 我目前最好的办法是让网络线程在发出

我有一个Qt/C++应用程序,带有常用的GUI线程和一个网络线程。网络线程正在使用一个外部库,它有自己的基于select()的事件循环。。。所以网络线程没有使用Qt的事件系统

目前,当各种事件发生时,例如成功连接时,网络线程只会发出()s信号。我认为这可以正常工作,因为signals/slots机制为GUI线程正确地发布了信号

现在,我需要网络线程能够调用GUI线程来提问。例如,网络线程可能要求GUI线程请求建立一个对话框,请求密码

有人知道这样做的合适机制吗

我目前最好的办法是让网络线程在发出一个对象(
emit passwordRequestedEvent(passwordRequest);
)后,使用QWaitCondition等待。passwordRequest对象将在特定的QWaitCondition上有一个句柄,因此在做出决定时可以向它发出信号


这类事情明智吗?或者还有其他选择吗?

使用信号在线程之间发送消息是可以的,如果您不喜欢使用条件变量,那么您可以以或多或少异步的方式在两个方向上发送信号:如果您想在运行时继续处理网络内容,这可能是一个更好的选择t获取GUI的答复