Due to an astronomically atrocious bug on PyQt4、私は希望の最後の呼吸としてQWebViewで人為的にmousePressEventを起動する必要があります。 QWebViewのlinkClickedとurlChanged信号は、クリックされたリンクにJavascriptが関わっている場合(例えば、Youtubeビデオでは機能しません)、QUrlを渡しません。とリンクをマウスの左ボタンでクリックしたときです。中央と右ボタンでリンクをクリックすると、QUrlに完全にアクセスできます。QWebViewで人為的にmousePressEventをトリガーすることはできますか?
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をキャッチすることができるようにだけ、リンク上の真ん中の右ボタンでクリックのイベントをトリガ、クリックせずにクリックしてください。
私は信じられない!あなたは私の問題をちょうど解決しました!ハハ。私のソリューションと同じように動作しますが、linkClickedとurlChangedをオーバーライドしません。素晴らしい!どうもありがとうございました!私は今QtTestにもっと頼るつもりです。 –
解決策を組み合わせて 'app.sendEvent'を使用することもできますが、' mousePressEvent'ハンドラをオーバーライドするのではなく、イベントフィルタから送信することができます。 –