Оказывается, вам необходимо следить за QNetworkAccessManager, связанным с вашим QWebPage, и ждать сигнала finished(...). Затем вы можете проверить ответ HTTP и проверить его код состояния, запросив атрибут QNetworkRequest::HttpStatusCodeAttribute
.
Это лучше объяснить в коде:
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, можно также запросить код состояния HTTP непосредственно QNetworkReply :: Attribute и QNetworkRequest :: HttpStatusCodeAttribute см Http:. //doc.qt .nokia.com/4,7-снимок/qnetworkreply.html атрибут #. – Macke 2011-12-13 15:24:18