C++ 以Qt为单位的简单网络超时(c+;+;)

C++ 以Qt为单位的简单网络超时(c+;+;),c++,qt,C++,Qt,我正在用Qt编写一个简单的网络文件传输应用程序,我正在努力实现超时 基本上,我想要的是: while(!AcknowledgeReceived) { if(timeout) { break; } } 目前,超时由Qtimer更改,但一旦循环开始执行,它就永远不会离开。(插槽QTimer发送到的未执行。) 我推测这与线程有关,但我对正确实现这一点非常熟悉 所以我的问题是,我如何确保方法翻转超时被执行,或者我如何用另一个方法得到相同的结果?当你这样循环时,Qt主事件循环将不会运

我正在用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();
}