對於信號:什麼時候QNetworkReply :: error信號後跟一個finished()信號?
QNetworkReply::error(QNetworkReply::NetworkError code)
Qt的文檔說:當回覆於處理檢測到錯誤
這個信號被髮射。 完成的()信號可能會出現,表示連接已結束。
具體而言,什麼時候完成()信號被髮射,什麼時候發射?
對於信號:什麼時候QNetworkReply :: error信號後跟一個finished()信號?
QNetworkReply::error(QNetworkReply::NetworkError code)
Qt的文檔說:當回覆於處理檢測到錯誤
這個信號被髮射。 完成的()信號可能會出現,表示連接已結束。
具體而言,什麼時候完成()信號被髮射,什麼時候發射?
什麼時候QNetworkReply :: error信號後跟一個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());
}
}
謝謝。我擔心的是,是否有可能「由於錯誤而實際已經完成了回覆,並且沒有更多內容會被讀入,但是完成()信號未被取消」? – Nyaruko
@Nyaruko在實踐中,我們對這樣的處理程序感到滿意。我們還連接了networkAccessManager.post()返回的QNetworkReply :: sslErrors信號。 – AlexanderVX
對於我的情況,我只是通過普通的http下載一些文件(其中一些文件可能很大,比如100MB)。是否有必要擔心sslErrors?你使用的是什麼版本的Qt? – Nyaruko
[這](http://stackoverflow.com/questions/18404483/should-i-connect-to-qnetworkreplyerror-as-well)可能會回答你的問題。 –