つのノートをあなたのページ要素(外部イメージやスクリプトなど)でネットワークエラーが発生した場合は、読み込まれたページの代わりにエラーページを表示します。
QWebPage :: extension()とQWebPage :: supportsExtension()を再実装するオプションもあります。この場合、QT Webkitは、ページエラーのためにextension()の実装を呼び出し、指定したページに置き換えます次のようになります。
class WebPage : public QWebPage
{
Q_OBJECT
public:
WebPage(QObject *parent = 0);
bool extension(Extension extension,
const ExtensionOption *option,
ExtensionReturn * output);
bool supportsExtension(Extension extension) const;
};
bool WebPage::extension(Extension extension,
const ExtensionOption *option,
ExtensionReturn * output)
{
if(!option || !output) {
return false;
}
if(extension == QWebPage::ErrorPageExtension) {
const ErrorPageExtensionOption *errOption =
static_cast<const ErrorPageExtensionOption*>(option);
QString errPage;
errPage = "<html><body><h1>";
errPage += "Page loading error, URL: ";
errPage += errOption->url.toString();
errPage += "</h1><h3>Error occurred in the ";
switch (errOption->domain) {
case QWebPage::QtNetwork:
errPage += "QT network layer, code is: ";
break;
case QWebPage::Http:
errPage += "HTTP layer, HTTP error code is: ";
break;
case QWebPage::WebKit:
errPage += "WebKit internals, error code is: ";
break;
default:
errPage += "Unknown domain, error code is: ";
}
errPage += errOption->error;
errPage += "</h3><h4><br>Error text: ";
errPage += errOption->errorString;
errPage += "</h4></body></html>";
ErrorPageExtensionReturn *errReturn =
static_cast<ErrorPageExtensionReturn*>(output);
errReturn->baseUrl = errOption->url;
errReturn->content = errPage.toUtf8();
// errReturn->contentType = "text/html"
// errReturn->encoding = "UTF-8"; // these values are defaults
return true;
}
return false;
}
bool WebPage::supportsExtension(Extension extension) const
{
if(extension == QWebPage::ErrorPageExtension) {
return true;
}
return QWebPage::supportsExtension(extension);
}
出典
2014-04-28 10:59:20
Eri
ありがとうございました。これは本当に私の問題を解決します。 – Pascal