Due to an astronomically atrocious bug on PyQt4, Мне нужно запустить мышьPressEvent искусственно на QWebView как последнее дыхание надежды. По какой-то непонятной причине, сигналы QWebView и urlChanged не передают QUrl, когда связанная ссылка имеет Javascript (например, она не работает на видео Youtube) и, когда была нажата левая кнопка с левой кнопкой мыши. Доступ к QUrl можно получить при нажатии ссылки со средней и правой кнопками.Возможно ли инициировать mousePressEvent искусственно на QWebView?
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 правильно.
Не могу поверить! Ты только что решил мою проблему! ха-ха. Он работает так же, как и мое решение, но это не отменяет ссылкиClicked и urlChanged. Фантастика! Большое спасибо! Теперь я буду больше полагаться на QtTest. –
Вы также можете комбинировать решения и использовать 'app.sendEvent', но отправлять их из фильтра событий вместо переопределения обработчика mousePressEvent. –