做同步QNetworkAccessManager :: get的正确方法是什么?Qt同步QNetworkAccessManager得到
qt wiki提供了一种方法,但声明“不建议在实际应用中使用它”。 mailinglist提供了一个类似的wiki解决方案。
做同步QNetworkAccessManager :: get的正确方法是什么?Qt同步QNetworkAccessManager得到
qt wiki提供了一种方法,但声明“不建议在实际应用中使用它”。 mailinglist提供了一个类似的wiki解决方案。
百胜可以使用这样的事情:
QEventLoop loop;
connect(_netReply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
在维基和从钇答案中提到的简单的解决方案是非常脆弱的,因为它不能处理所有可能的故障情况(如代理)和因此不应该在生产环境中使用,而且不幸的是它已经变得非常多产,所以任何需要同步QNAM的人都会被“异步使用[愚蠢]”或这个简单的代码最终失败。
我还没有发现通过Qt的团队自己做了一个“正确”的解决方案,但是这个家伙在CodeProject上已经足够体面做出更全面的包装,应该是安全多了:
http://www.codeproject.com/Articles/484905/Use-QNetworkAccessManager-for-synchronous-download
我在python,GUI和生产系统中很容易做到这一点,为什么Qt中的事情(同步使用QNAM)在形式上和容易上都不是那么容易? – 2016-06-08 20:30:56
@RaidenCore,也问同样的问题。它与C++有关吗? – nurgasemetey 2017-01-09 14:20:49