Resulta que debe controlar el QNetworkAccessManager asociado con su QWebPage y esperar una señal finished(...). A continuación, puede inspeccionar la respuesta HTTP y verificar su código de estado solicitando el atributo QNetworkRequest::HttpStatusCodeAttribute
.
Es mejor explicados en código:
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;
}
}
Hay más NetworkErrors para elegir, por ejemplo, para errores TCP o HTTP 401.
Fwiw, también se puede consultar el código de estado HTTP directamente con QNetworkReply :: atributo y QNetworkRequest :: HttpStatusCodeAttribute, véase http:. //doc.qt .nokia.com/4.7-snapshot/qnetworkreply.html # attribute. – Macke
Una cosa que quizás no desee es activar esta función para cada activo en una página web que no se carga; por ejemplo, imágenes y JavaScript. Lo ideal es que probablemente solo le importe si la página principal no se carga. –