QWebEngineView 加载网页后,重写mousepressevent捕获鼠标点击事件,无响应原因是
QWebEngineView在加载界面后,被本身的child接收了该事件,
解决办法:同过重载event,截取QEvent::ChildAdded事件
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
from PyQt5.QtCore import Qt
from PyQt5.QtCore import QTimer, QEventLoop, QObject, pyqtSignal, QEvent
class QWebEngineView_New(QWebEngineView):
js_result = pyqtSignal(str)
def __init__(self, parent=None):
super(QWebEngineView_New, self).__init__(parent)
self.load(QtCore.QUrl())
self.focusProxy().installEventFilter(self)
self.setMouseTracking(True) #追踪鼠标
self._glwidget = None
def eventFilter(self, source, event):
# QWebEngineView 覆盖了 event() 方法,所以它没有调用 QWidget 事件处理程序
if event.type() == QEvent.MouseButtonPress:
print(f'eventtype:{e