进行同步QNetworkAccessManager :: get的正确方法是什么?
qt wiki提供了一种方法,但声明“不建议在实际应用中使用它。” mailinglist为wiki提供了类似的解决方案。
答案 0 :(得分:5)
百胜可能会使用这样的东西:
QEventLoop loop;
connect(_netReply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
答案 1 :(得分:1)
wiki中提到的简单解决方案和yttrium的答案非常脆弱,因为它没有处理所有可能的故障情况(例如代理),因此不应该在生产环境中使用,不幸的是它已经变得非常多产,所以任何要求同步QNAM的人都会被"使用asynchronoysly [stupid]"或者这段最终会失败的简单代码。
我还没找到一个适当的"由Qt团队自己制作的解决方案,但是这个关于codeproject的人已经足够好了,可以制作一个更加全面的包装器,它应该更加安全: http://www.codeproject.com/Articles/484905/Use-QNetworkAccessManager-for-synchronous-download