2012-02-16 5 views
1

C++ (이전 게시물에서 언급했듯이)에서 정말 멍청한데, 내 친구는 HTTP GET 요청을 보내 정보를 보내려는 경우 QNetworkAccessManager를 사용하도록 제안했습니다.C++ QNetworkAccessManager (Qt) with openGL

내가 현재는 OpenGL-ES 작업과 GET 요청을 전송하는 다음 두 줄의 코드를 수행하려는 오전 : 그러나

QNetworkAccessManager* netMan = new QNetworkAccessManager(this); 
netMan->get(QNetworkRequest(QUrl("something/?userID=1"))); 

을, 그것을 좋아하지 않습니다 "이"그것은에 있기 때문에 main() 메소드를 호출하고 QObject를 참조하지 않습니다 (QApplication을 추측하고 있습니다). "이"제거하면 내 응용 프로그램 빌드,하지만 절대로드 (나는 심지어 실행하지 않는 상단에 "printf (1)"넣어).

해결 방법에 대한 제안 사항이나 대안이 있으십니까? 미리 감사드립니다.

- 제임스

QNetworkAccessManager 생성자의 매개 변수 만이에 delete를 호출하려는 경우 개체 이상 (삭제) 청소에 대한 책임과 필요가 없습니다 것입니다 QObject 기반의 부모를 지정하는 데 필요한

답변

1

너 자신. "결코로드"에 의해 당신이 언급하는 것을 아주 확실하지 않다

또는 당신은 printf하지만 다시 무엇을 얻기 위해, 당신이 실제로 get()에 호출에 의해 반환되는 QNetworkReply 포인터를 유지해야 어디다 .

그리고 아무것도 얻으려면 이벤트 루프를 실행해야합니다. 응용 프로그램이 콘솔 전용 (GUI 없음) 인 경우 QCoreApplication 객체를 사용할 수 있습니다.

#include <QCoreApplication> 
#include <QNetworkAccessManager> 
#include <QUrl> 
#include <QNetworkRequest> 
#include <QNetworkReply> 
#include <QDebug> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 
    QNetworkAccessManager *netMan = new QNetworkAccessManager(); 
    QNetworkReply *reply = netMan->get(QNetworkRequest(QUrl("http://google.com"))); 
    a.connect(reply, SIGNAL(finished()), SLOT(quit())); 
    a.exec(); 
    qDebug() << reply->readAll(); 
    delete netMan; 
} 
:

이 최소한의 코드를 사용해보십시오