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);
我对 QWebView 中 QWebPage 对象的生命周期有点不确定,但从我的测试来看,QWebPage 似乎总是保持相同的实例并且只是加载新内容。所以我认为我应该简单地将我的页面提供给 QWebView,我没有看到另一种让它使用我的派生类的方法。但是,当通过 WebView 或直接通过页面的大型机加载虚假 URL、不存在的本地文件或不受支持的内容时,我从未收到带有 ErrorPageExtension 信息的调用。
任何帮助表示赞赏。这是使用 Qt 4.8.2。