コードを QtWebKit から QtWebEngine に移行中です。全体として、移行はかなりスムーズに進みましたが、1 つの特定の問題に行き詰まっています。QWebEngineView を使用して Google マップ ページを表示します。配置されたマーカーの一部には、外部ブラウザでリンクを開く「詳細についてはここをクリック」というポップアップが表示される情報ウィンドウがあります。
QtWebKit を使用すると、これは setLinkDelegation ポリシーによってかなり簡単でした。ただし、ここではもう少し複雑なようです。例に従おうとしましたが、どういうわけか QWebEngineView 内で QWebEnginePage を再定義する必要があります。以下は、これまでに思いついたものです。これを実際にどのように接続できるか考えていますか?
ありがとう
#ifndef MYQWEBENGINEVIEW_H
#define MYQWEBENGINEVIEW_H
#include <QWebEngineView>
#include <QDesktopServices>
class MyQWebEnginePage : public QWebEnginePage
{
Q_OBJECT
public:
MyQWebEnginePage(QObject* parent = 0) : QWebEnginePage(parent){}
bool acceptNavigationRequest(const QUrl & url, QWebEnginePage::NavigationType type, bool isMainFrame)
{
qDebug() << "acceptNavigationRequest("<<url << "," << type << "," << isMainFrame<<")";
if (type == QWebEnginePage::NavigationTypeLinkClicked)
{
QDesktopServices::openUrl(url);
return false;
}
return true;
}
};
class MyQWebEngineView : public QWebEngineView
{
Q_OBJECT
public:
MyQWebEngineView(QWidget* parent = 0);
MyQWebEnginePage* page() const;
};
#endif // MYQWEBENGINEVIEW_H