2012-08-06 113 views

回答

4

百胜可以使用这样的事情:

QEventLoop loop; 
connect(_netReply, SIGNAL(finished()), &loop, SLOT(quit())); 
loop.exec(); 
1

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

我还没有发现通过Qt的团队自己做了一个“正确”的解决方案,但是这个家伙在CodeProject上已经足够体面做出更全面的包装,应该是安全多了:
http://www.codeproject.com/Articles/484905/Use-QNetworkAccessManager-for-synchronous-download

+0

我在python,GUI和生产系统中很容易做到这一点,为什么Qt中的事情(同步使用QNAM)在形式上和容易上都不是那么容易? – 2016-06-08 20:30:56

+0

@RaidenCore,也问同样的问题。它与C++有关吗? – nurgasemetey 2017-01-09 14:20:49