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 を使用しています。