c – QWebEngineView在外部浏览器中打开
发布时间:2020-12-16 06:51:06 所属栏目:百科 来源:网络整理
导读:我正在将我的代码从QtWebKit移动到QtWebEngine.总的来说,过渡相当顺利,但是,我坚持一个特定的问题.我使用QWebEngineView显示Google Maps页面.放置的一些标记有信息窗口,弹出“单击此处获取更多信息”,在外部浏览器中打开链接. 使用QtWebKit,通过setLinkDeleg
我正在将我的代码从QtWebKit移动到QtWebEngine.总的来说,过渡相当顺利,但是,我坚持一个特定的问题.我使用QWebEngineView显示Google Maps页面.放置的一些标记有信息窗口,弹出“单击此处获取更多信息”,在外部浏览器中打开链接.
使用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 解决方法
你不需要第二部分.试试这个:
QWebEngineView *view = new QWebEngineView(); MyQWebEnginePage *page = new MyQWebEnginePage(); view->setPage(page); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |