簡體   English   中英

QWebEngineView在外部瀏覽器中打開

[英]QWebEngineView Open In External Browser

我正在將我的代碼從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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM