0

QNetworkAccessManager を使用して、http 要求の送信を処理しました。

void f()
{    
    QNetworkRequest request( QUrl( address ) );    
    QNetworkAccessManager mng;
    mng.get(request);
    //QEventLoop().exec();
    }
void main()
{
    ...
    f();
    ...
}

行 QEventLoop().exec(); がない場合、アプリはリクエストを送信しません。しかし、行 QEventLoop().exec(); がある場合は、そうなります。私はなぜ理解していないのですか?
あなたは私をクリアできますか?
どうもありがとうございました!(P/s: このリンクを見ました: Sending an HTTP request using QNetworkAccessManager )

4

1 に答える 1

0
void f()    
{        
    static QNetworkRequest request( QUrl( address ) );        
    static QNetworkAccessManager mng;
    mng.get(request);
}
void main()
{
    ...
    f();
    ...
}

これは、QNetworkAccessManager が非同期であり、リクエストを送信するのに時間がかかるためだと思います。ただし、require、url、query、... はスコープ外になると破棄されます。-> QNetworkAccessManager がリクエストを送信する ( QEventLoop().exec(); を使用する) か、require、url、query などを永続化する (static で宣言する) 場合はスコープ内で必要です。

于 2013-05-11T07:57:15.000 に答える