C++ 以Qt为单位的简单网络超时(c+;+;)
我正在用Qt编写一个简单的网络文件传输应用程序,我正在努力实现超时 基本上,我想要的是:C++ 以Qt为单位的简单网络超时(c+;+;),c++,qt,C++,Qt,我正在用Qt编写一个简单的网络文件传输应用程序,我正在努力实现超时 基本上,我想要的是: while(!AcknowledgeReceived) { if(timeout) { break; } } 目前,超时由Qtimer更改,但一旦循环开始执行,它就永远不会离开。(插槽QTimer发送到的未执行。) 我推测这与线程有关,但我对正确实现这一点非常熟悉 所以我的问题是,我如何确保方法翻转超时被执行,或者我如何用另一个方法得到相同的结果?当你这样循环时,Qt主事件循环将不会运
while(!AcknowledgeReceived)
{
if(timeout)
{
break;
}
}
目前,超时由Qtimer更改,但一旦循环开始执行,它就永远不会离开。(插槽QTimer发送到的未执行。)
我推测这与线程有关,但我对正确实现这一点非常熟悉
所以我的问题是,我如何确保方法翻转超时被执行,或者我如何用另一个方法得到相同的结果?当你这样循环时,Qt主事件循环将不会运行,因为它是在对函数的调用中运行的 您或者需要重新设计应用程序,以便只使用插槽和信号,因此不需要循环。或者你必须这样做。例如
QNetworkAccessManager netman;
QNetworkRequest request{url};
QNetworkReply* reply = netman.post(request, data);
while (!reply->isFinished())
{
QThread::msleep(1);
qApp->processEvents();
}