在 QtWebView 中捕获链接点击并在默认浏览器中打开
我正在 QtWebView 中打开一个页面(如果重要的话,在 PyQt 中),我想打开系统默认浏览器中的所有链接。即,单击链接不应更改 QtWebView 中的站点,但应使用默认浏览器打开它。我想让用户无法更改 QtWebView 中的站点。
我怎样才能做到这一点?
I am opening a page in QtWebView (in PyQt if that matters) and I want to open all links in the system default browser. I.e. a click on a link should not change the site in the QtWebView but it should open it with the default browser. I want to make it impossible to the user to change the site in the QtWebView.
How can I do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这样做就可以了:
That does it:
PyQt5 的更新示例(神奇之处在于重新实现“acceptNavigationRequest”方法):
Updated example for PyQt5 (the magic is to re-implement the "acceptNavigationRequest" method):
当您单击具有
target="_blank"
属性的链接时,QT 会调用 QWebEnginePage 中的 CreateWindow 方法来创建新选项卡/新窗口。关键是重新实现此方法,而不是打开新选项卡,而是打开新的浏览器窗口。
When you click a link that has the
target="_blank"
attribute, QT calls the CreateWindow method in QWebEnginePage to create a new tab/new window.The key is to re-implement this method to, instead of opening a new tab, open a new browser window.