8

同步 QNetworkAccessManager::get 的正确方法是什么?

qt wiki提供了一种方法,但指出“不建议在实际应用程序中使用它” 。邮件列表提供了与 wiki 类似的解决方案。

4

2 回答 2

10

百胜可能会使用这样的东西:

QEventLoop loop;
connect(_netReply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
于 2013-07-01T17:33:11.683 回答
2

wiki 和 yttrium 的答案中提到的简单解决方案非常脆弱,因为它不能处理所有可能的故障情况(例如代理),因此不应该在生产环境中使用,不幸的是它已经变得非常多产,所以任何要求同步 QNAM 的人都会被“异步使用它 [愚蠢]”或这段最终会失败的简单代码所困扰。

我还没有找到 Qt 团队自己制作的“正确”解决方案,但是 codeproject 上的这个人已经足够体面,可以制作一个更全面的包装器,应该更安全: http:
//www.codeproject.com/Articles /484905/使用-QNetworkAccessManager-for-synchronous-download

于 2014-07-28T08:59:45.823 回答