我如何编写一个等待POST完成的函数?我正在登录一个有多个重定向的网站,并使用带有QNetworkReply()
的connect()导致无限的GET请求。
我现在正在使用等待计时器:
test->sendPostRequest(url, loginData);
QEventLoop loop;
QTimer::singleShot(8000, &loop, SLOT(quit()));
loop.exec();
test->sendGetRequest(request);
答案 0 :(得分:3)
您可以使用QEventLoop
使用本地事件循环,并将QNetworkAccessManager
完成的信号连接到QEventLoop
的退出广告位。这样,当帖子结束时,本地事件循环退出,其余部分执行:
QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);
networkManager->post(QNetworkRequest(serviceUrl), postData);
QEventLoop loop;
loop.connect(networkManager, SIGNAL(finished(QNetworkReply*)), SLOT(quit()));
loop.exec();
//...
我不应该认为这是“阻止等待而不阻止UI”的标准模式。