【发布时间】:2016-05-25 15:11:33
【问题描述】:
Due to an astronomically atrocious bug on PyQt4,我需要在 QWebView 上人为地触发 mousePressEvent 作为最后一丝希望。由于某些不明原因,当点击的链接涉及 Javascript(例如,它不适用于 Youtube 视频)和时,QWebView 的 linkClicked 和 urlChanged 信号不会传递 QUrl用鼠标左键单击。使用中间和右键单击链接时,可以完美访问 QUrl。
class CQWebView(QtWebKit.QWebView):
def mousePressEvent(self, event):
if type(event) == QtGui.QMouseEvent:
if event.button() == QtCore.Qt.LeftButton:
# FIRE A QtCore.Qt.MiddleButton EVENT HERE,
# SO THAT I CAN GET THE BLOODY LINK AFTERWARDS.
elif event.button() == QtCore.Qt.MiddleButton:
self.emit(QtCore.SIGNAL("OPEN_IN_NEW_TAB")) # Example
elif event.button() == QtCore.Qt.RightButton:
self.emit(QtCore.SIGNAL("XXX")) # Example
所以,我字面上是想“人工点击”,点击不点击,只是触发点击链接中右中键的事件,这样我就可以正确捕捉QUrl了。
【问题讨论】: