【问题标题】:Is it possible to get url of clicked link in WebEngineView?是否可以在 WebEngineView 中获取点击链接的 url?
【发布时间】:2016-04-07 19:21:32
【问题描述】:

我注意到在 Qt 5.4 版中,WebView 有一个名为navigationRequired 的信号,它的参数中有一个点击的 URL。在新的 WebView 和 WebEngineView 中,没有这样的信号。我也没有找到任何替代方案。

在 Qt 5.6 中有什么方法可以获取点击链接的 URL 吗?

【问题讨论】:

    标签: qt qml qtwebengine qt5.6


    【解决方案1】:

    重新实现QWebEnginePage的方法acceptNavigationRequest

    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)
            {
                // retrieve the url here
                return false;
            }
            return true;
        }
    };
    

    【讨论】:

    • 所以基本上每次点击 QML WebEngineView 都会调用这个方法?
    • 你为什么不试试呢?
    • 很抱歉这个延迟的问题,但我该如何使用它?我的意思是,这是 c++ 类,我需要从 qml 中检查它。
    • 哦,好的。然后查看此链接:doc.qt.io/qt-5/…。您可以从 WebEngineView 中检索不同的操作
    • 是的,确实!行动解决了我的问题。我刚刚调用了 WebEngineView.onLoadingChanged 并检查了 loadRequest.status 是否等于 LoadStartedStatus,如果是,我调用了 WebAction(Stop) 并从默认浏览器进行了调用。
    猜你喜欢
    • 2012-02-25
    • 2017-11-08
    • 2011-06-08
    • 2015-05-26
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多