4
我正在将我的代码从QtWebKit移动到QtWebEngine。总的来说,过渡相当顺利,但是,我陷入了一个特定的问题。我使用QWebEngineView来显示Google Maps页面。一些放置的标记有infowindows弹出“单击此处了解更多信息”,它打开外部浏览器中的链接。QWebEngineView在外部浏览器中打开
使用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
你试过setPage吗? 'void QWebEngineView :: setPage(QWebEnginePage * page)' – CapelliC
我刚刚给它一个镜头。我相信你的意思是这样的: 'MyQWebEnginePage thisPage; ui-> map-> setPage(thisPage);' 但是,这会导致关于错误类型的错误。 – goalie39
为什么不指针?应该是'auto thisPage = new MyQWebEnginePage' – CapelliC