あなたのQWebPageに関連付けられたQNetworkAccessManagerを監視し、finished(...)信号を待つ必要があることが分かります。次に、QNetworkRequest::HttpStatusCodeAttribute
属性を要求することによって、HTTP応答を検査し、その状態コードを確認することができます。
void MyClass::initWebPage()
{
myQWebPage = new QWebPage(this);
connect(
myQWebPage->networkAccessManager(), SIGNAL(finished(QNetworkReply *)),
this, SLOT(httpResponseFinished(QNetworkReply *))
);
}
void MyClass::httpResponseFinished(QNetworkReply * reply)
{
switch (reply->error())
{
case QNetworkReply::NoError:
// No error
return;
case QNetworkReply::ContentNotFoundError:
// 404 Not found
failedUrl = reply->request.url();
httpStatus = reply->attribute(
QNetworkRequest::HttpStatusCodeAttribute).toInt();
httpStatusMessage = reply->attribute(
QNetworkRequest::HttpReasonPhraseAttribute).toByteArray();
break;
}
}
は、例えばから選択するNetworkErrors以上あります
それは良いでしょうが、コードで説明しましたTCPエラーまたはHTTPの場合401
FWIWは、1にもQNetworkReply ::属性とQNetworkRequest :: HttpStatusCodeAttribute、参照httpで直接HTTPステータスコードを照会することができます。//doc.qt .nokia.com/4.7-snapshot/qnetworkreply.html#属性 – Macke
あなたが望ましくないことの1つは、読み込みに失敗したWebページの各アセットに対してこの機能を起動することです。画像やJavaScriptなどがあります。理想的なのは、メインページ自体が読み込まれない場合のみです。 –