我希望获得更多的信息,而不仅仅是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,我没有看到其他方法让它使用我的派生类。但是当加载虚假的ErrorPageExtension、不存在的本地文件或不受支持的内容时,无论是通过WebView还是直接通过页面的大型机,我都不会收到带有URL信息的调用。
任何帮助都是非常感谢的。这是使用Qt 4.8.2。
发布于 2013-01-26 05:03:57
这里有一个小错误:
...
virtual bool supportsExtension(Extension extension) const // const!!!
{
return QWebPage::ErrorPageExtension === extension;
}
...您忘记复制常量修改器。
https://stackoverflow.com/questions/14528038
复制相似问题