2016-05-25 11 views
2

QNetworkReply :: errorシグナルの後にfinished()シグナルが続きますか?信号について

QNetworkReply::error(QNetworkReply::NetworkError code) 

Qtのドキュメントによると:

応答が処理中にエラーを検出すると、この信号が発せられます。 接続が終了したことを示す、finished()シグナルがおそらく続きます。

具体的には、finished()シグナルはいつ放出されますか?

+1

[この](http://stackoverflow.com/questions/18404483/should-i-connect-to-qnetworkreplyerror-as-well)あなたの質問に答えるかもしれません。 –

答えて

3

QNetworkReply :: errorシグナルの後にfinished()シグナルが続きますか? 具体的には、finished()シグナルはいつ放出され、 は放出されませんか?

信号finished()は、データ送信完了または送信中のエラーのいずれかによってリクエストが完了したときに発せられます。エラーの場合はerror()の直前に信号finished()が発生しています。実際には、「エラー」と「送信成功」の両方についてfinished()を処理することができます。

を説明するために:

// connect 'finished' signal with consumer 
connect(&s_networkAccessManager, SIGNAL(finished(QNetworkReply*)), 
     this, SLOT(requestFinished(QNetworkReply*))); 



void MyClass::requestFinished(QNetworkReply* pReply) 
{ 
    if (pReply) 
    { 
     if (pReply->error() == QNetworkReply::NoError) 
      consumeData(pReply) 
     else 
      errorHandler(pReply->error(), pReply->errorString()); 
    } 
} 
+0

ありがとうございます。私の心配は、「実際には返信は既にエラーで終了しており、内容は読み込まれませんが、finished()シグナルは送信されません」ということですか? – Nyaruko

+1

@ニャルコ実際に私たちはそのようなハンドラに満足しています。また、networkAccessManager.post()が返すQNetworkReply :: sslErrorsシグナルを接続します。 – AlexanderVX

+0

私の場合は、通常のhttpを通じていくつかのファイルをダウンロードしています(そのうちのいくつかは大容量、たとえば100MB)。 sslErrorsについて心配する必要がありますか? Qtのどのバージョンを使用していますか? – Nyaruko

関連する問題