Due to an astronomically atrocious bug on PyQt4,我需要在QWebView上人为地触发一个mousePressEvent作为最后一丝希望。由于一些模糊的原因,当点击的链接涉及Javascript时,QWebView的linkClicked和{a3}信号不会通过qrl(例如,它在Youtube视频中不起作用)和。当用中间和右边的按钮单击链接时,可以完美地访问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。在
{我用中间的按钮点击了}左键。在
我只需要在实例化时将QApplication的实例传递给自定义QWebView的实例:
^{pr2}$这样,我用鼠标左键点击QWebView,然后用中间按钮人工点击它。问题是这样做会覆盖来自QWebView的linkClicked和urlChanged信号的默认行为。即使我可以发出这些信号,我也无法访问被单击的链接的地址,因为通过访问QWebView.url()只给我一个现在的问题,而不是未来点击的问题。在
真的令人沮丧。在
您也可以使用
QtTest
模块来完成。在web视图上设置一个事件过滤器,检查鼠标左键单击事件并发送鼠标中键相关问题 更多 >
编程相关推荐