是否可以在 WebEngineView 中获取点击链接的 url?
Posted
技术标签:
【中文标题】是否可以在 WebEngineView 中获取点击链接的 url?【英文标题】:Is it possible to get url of clicked link in WebEngineView? 【发布时间】:2016-04-07 19:21:32 【问题描述】:我注意到在 Qt 5.4 版中,WebView 有一个名为navigationRequired 的信号,它的参数中有一个点击的 URL。在新的 WebView 和 WebEngineView 中,没有这样的信号。我也没有找到任何替代方案。
在 Qt 5.6 中有什么方法可以获取点击链接的 URL 吗?
【问题讨论】:
【参考方案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) 并从默认浏览器进行了调用。以上是关于是否可以在 WebEngineView 中获取点击链接的 url?的主要内容,如果未能解决你的问题,请参考以下文章
WebEngineView - 立即运行JavaScript(在执行页面脚本之前)
如何在 WebEngineView 中呈现的 html 文件中弹出文件对话框/打印对话框?