2012-02-16 5 views
1

私は、HTTP GETリクエストを送信して情報を送信する場合、私はQNetworkAccessManagerで作業することを提案しましたが、C++では本当にうんざりです。C++ OpenGLと組み合わせたQNetworkAccessManager(Qt)

私は現在のOpenGL ESと協力し、GETリクエストを送信するために次の2行のコードを実行したいのです:

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

しかし、それは「この」それがであるので、好きではありませんmain()メソッドであり、QObjectを参照していません(私はQApplicationを推測しています)。私が "this"を取り除くと、私のアプリケーションはビルドされますが、ロードされることはありません(私は "printf(1)"を実行しないトップに置く)。

これを修正する方法に関するご提案または代替方法はありますか?前もって感謝します。

QNetworkAccessManagerコンストラクタ内のパラメータが唯一後でオブジェクトクリーンアップの責任となります QObjectベースの親(削除)を指定するために必要とされる

-James

答えて

1

、あなたが上deleteをコールすることを計画している場合必要はありませんあなた自身。

printfを置く場所、または何も戻さないようにするために何かを参照しているのか分かりませんが、実際にはへの呼び出しによって返される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; 
} 

は、この最小限のコードを試してみてください