处理 QWebView / QWebPage 中的错误
Posted
技术标签:
【中文标题】处理 QWebView / QWebPage 中的错误【英文标题】:Handling errors in QWebView / QWebPage 【发布时间】: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。
【问题讨论】:
【参考方案1】:有一点错误:
...
virtual bool supportsExtension(Extension extension) const // const!!!
return QWebPage::ErrorPageExtension === extension;
...
您忘记复制 const 修饰符。
【讨论】:
啊……就是这样,谢谢你的指点!我认为本可以在看不到它的情况下再盯着它看几个小时;) 是的,这就是为什么 C# 有override
关键字:)以上是关于处理 QWebView / QWebPage 中的错误的主要内容,如果未能解决你的问题,请参考以下文章
PyQt4.QtWebKit:加载停止时 QWebPage QWebView 设置超时
Qt 5.3 使用原来的QT4.8.4项目时QWebView QWebFrame
python3.4中的QWebPage和pymongo在哪里可以找到?