【发布时间】:2013-01-25 18:23:40
【问题描述】:
我希望在loadFinished 中获得比success = false 更多的信息(这通常只是取消加载)。从该站点上的文档和其他帖子中,我收集到我应该继承 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。
【问题讨论】:
标签: qt error-handling qtwebkit qwebpage