2012-08-06 2 views
4

동기식 QNetworkAccessManager :: get을 수행하는 적절한 방법은 무엇입니까?Qt 동기식 QNetworkAccessManager 얻기

qt wiki은 접근 방식을 제공하지만 "실제 응용 프로그램에서는 사용하지 않는 것이 좋습니다"라고 나와 있습니다. mailinglist은 wiki와 비슷한 솔루션을 제공합니다.

답변

4

얌은 다음과 같이 사용할 수 있습니다 :

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

위키과 이트륨의 대답에 언급 된 간단한 해결책은 가능한 모든 장애 시나리오를 처리하지 않기 때문에 매우 취약 (예 : 프록시 등) 및 따라서 프로덕션 환경에서 사용해서는 안되며 불행히도 다작하게되었습니다. 따라서 동기식 QNAM을 요구하는 사용자는 "asynchronisly [stupid]"또는 결국 실패 할 간단한 코드 조각을 사용하여 간단히 혼란에 빠지게됩니다.

내가 Qt는 팀 스스로 만든 "적절한"해결책을 발견하지 않은,하지만 CodeProject의에이 사람이 훨씬 더 안전해야 더 포괄적 인 래퍼 만들기에 충분 괜찮은했다

:
http://www.codeproject.com/Articles/484905/Use-QNetworkAccessManager-for-synchronous-download

+0

I을 이 작업은 파이썬, GUI 및 프로덕션 시스템에서 쉽게 가능합니까? QNAM을 동기식으로 사용하는 것이 공식적이고 쉬운 Qt가 아닌 이유는 무엇입니까? –

+0

@RaidenCore, 또한 같은 질문을합니다. C++과 관련이 있습니까? – nurgasemetey