QWebEnginePage::acceptNavigationRequest 用户点击页面上的链接无响应
时间: 2024-03-17 12:46:02 浏览: 118
业务日志查询-python gui库图形界面开发之pyqt5中qwebengineview内嵌网页与python的数据交互传参详细方法实例
在重写`acceptNavigationRequest`方法时,需要注意以下几点:
1. 如果要处理用户点击链接的事件,必须返回False,表示阻止QWebEngineView默认的行为,否则QWebEngineView会自动打开链接。
2. 如果不处理用户点击链接的事件,可以返回True或调用父类的方法,表示允许QWebEngineView继续处理点击事件。
下面是一个简单的例子,演示如何在QWebEngineView中拦截用户点击页面上的链接,并在控制台输出链接的URL:
```python
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QDesktopServices
from PyQt5.QtWebEngineWidgets import QWebEnginePage
class MyWebEnginePage(QWebEnginePage):
def acceptNavigationRequest(self, url, _type, isMainFrame):
if _type == QWebEnginePage.NavigationTypeLinkClicked:
# 阻止QWebEngineView默认行为
self.load(url)
print('Link clicked:', url)
return False
return super().acceptNavigationRequest(url, _type, isMainFrame)
```
这个例子中,我们通过调用`QWebEnginePage.load()`方法来显示链接的内容,并且返回False来阻止QWebEngineView默认行为。如果你不想处理链接的内容,可以直接返回True或调用父类的方法。
注意:在这个例子中,我们使用`QWebEnginePage.load()`来显示链接的内容。如果你不想在当前的QWebEngineView中显示链接的内容,可以使用`QDesktopServices.openUrl()`方法来在默认浏览器中打开链接。
阅读全文