当newViewRequested信号发出时,在外部浏览器中打开URL

时间:2017-02-28 09:58:58

标签: qt browser qml qt5 qtwebengine

我使用WebEngineView QML Type显示一个网页,其中包含一些需要在新标签页中打开的链接。链接是像

这样的东西
<a href="http://google.com" target="_blank">Go to google in new tab</a>

我想在外部浏览器中打开newViewRequested signal的网址,但WebEngineNewViewRequest没有可以与Qt.openUrlExternally(request.url)一起使用的'url'属性。

WebEngineNewViewRequest有一个私有成员QUrl m_requestedUrl,无法作为qml中的属性访问。 如何处理问题,获取URL并在外部浏览器中打开它。 感谢。

1 个答案:

答案 0 :(得分:1)

在Qt5中,您可以使用navigationRequested信号来实现此目的:

onNavigationRequested: function(request) {
    if (request.navigationType === WebEngineNavigationRequest.LinkClickedNavigation) {
        Qt.openUrlExternally(request.url)
    }
    request.action = WebEngineNavigationRequest.IgnoreRequest
}

IgnoreRequest分配给action属性的行是为了确保不在WebEngineView中打开URL。