Обработка ошибок в QWebView / QWebPage
Я хочу получить больше информации, чем просто success = false
в loadFinished
(чаще всего это просто отмененная загрузка). Из документации и других постов на этом сайте я понял, что должен создать подкласс QWebPage и переопределить extension()
метод для обработки ErrorPageExtension.
Тем не менее, я не заставляю его работать, т. Е. Независимо от того, что я пытаюсь, мой метод расширения не вызывается. Я, вероятно, делаю что-то действительно глупое, но не вижу этого. В основном мой класс выглядит так:
class MyWebPage : public QWebPage
{
Q_OBJECT
public:
MyWebPage(QObject* parent = 0) : QWebPage(parent) {}
virtual bool extension(Extension extension,
const ExtensionOption* option = 0,
ExtensionReturn* output = 0)
{
// blah
}
virtual bool supportsExtension(Extension extension)
{
// blah
}
};
Реализация методов не является проблемой, у меня есть точка останова, и она никогда не вызывается. Я создаю экземпляр как
MyWebPage* page = new MyWebPage(this);
mUi.WebView->setPage(page);
Я немного не уверен относительно времени жизни объекта QWebPage в QWebView, но из моих тестов кажется, что QWebPage всегда остается тем же экземпляром и просто загружает новый контент. Поэтому я предположил, что должен просто передать свою страницу в QWebView, я не нашел другого способа заставить его использовать мой производный класс. Но при загрузке поддельных URL, несуществующих локальных файлов или неподдерживаемого содержимого, либо через WebView, либо напрямую через мэйнфрейм страницы, я никогда не получаю вызов с информацией ErrorPageExtension.
Любая помощь приветствуется. Это использует Qt 4.8.2.
1 ответ
Есть небольшая ошибка:
...
virtual bool supportsExtension(Extension extension) const // const!!!
{
return QWebPage::ErrorPageExtension === extension;
}
...
Вы забыли скопировать модификатор const.