簡體   English   中英

如何在QWebEngineView中模擬linkClicked(QUrl)信號?

[英]How to emulate linkClicked(QUrl) signal in QWebEngineView?

我在Qt5.6中將我的項目從Qt WebKit移植到Qt WebEngine。 我想在linkClicked(QUrl)上單擊href時發出linkClicked(QUrl)信號,但QWebEngineView沒有信號linkClicked(QUrl)。

如何模擬linkClickedSignal(QUrl)?

從Qt WebKit移植到Qt WebEngine

謝謝@Alexis P.我知道了。

class MyWebPage : public QWebEnginePage
{
    Q_OBJECT
public:
    MyWebPage(QObject* parent = 0) : QWebEnginePage(parent){}

    bool acceptNavigationRequest(const QUrl & url, QWebEnginePage::NavigationType type, bool)
    {
        if (type == QWebEnginePage::NavigationTypeLinkClicked)
        {
            //QDesktopServices::openUrl(url);
            emit linkClicked(url);
            return false;
        }
        return true;
    }

signals:
    void linkClicked(const QUrl&);

};

在我的窗口類中:

webView = new QWebEngineView(ui->verticalLayoutWidget);
webView->setPage(new MyWebPage());
ui->verticalLayout->addWidget(webView);
connect(webView- >page(),SIGNAL(linkClicked(QUrl)),this,SLOT(linkClicked(QUrl)));

我不確定它對你有用,但在我使用QWebEngineView應用程序中,我有可點擊的鏈接,必須在瀏覽器中打開相應的網站。

我這樣做是這樣的:

class MyQWebEnginePage : public QWebEnginePage
{
    Q_OBJECT

public:
    MyQWebEnginePage(QObject* parent = 0) : QWebEnginePage(parent){}

    bool acceptNavigationRequest(const QUrl & url, QWebEnginePage::NavigationType type, bool)
    {
        if (type == QWebEnginePage::NavigationTypeLinkClicked)
        {
            QDesktopServices::openUrl(url);
            return false;
        }
        return true;
    }
};

正如你所看到的,我只是重新實現虛方法acceptNavigationRequestQWebEnginePage檢索鏈接的URL點擊url 我不知道這是你想要達到的目標,但我希望有所幫助。

暫無
暫無

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

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