2016-05-21 10 views
1
PyQt4と

I'm developing a Web Browser、ここQWebViewsを作成するコードの一部です:QWebViewでマウスボタンが押されたかどうかを検出する方法は?

def compose_tab(self, index): 
     self.tabs[index].append(QtWebKit.QWebView()) 
     self.tabs[index][0].setLayout(self.tabs[index][1]) 
     self.tabs[index][1].addWidget(self.tabs[index][2]) 
     self.tabs[index][2].connect(self.tabs[index][2], QtCore.SIGNAL("linkClicked(const QUrl&)"), self.update_link) 
     self.tabs[index][2].load(QtCore.QUrl("http://www.google.com")) 
     self.url_field.setText("http://www.google.com") 

私は、マウスボタンがQWebViewに押されたときを検出します。

答えて

1

QWebViewのドキュメントでは、このクラスがQWidgetから継承されていることがわかります。つまり、QWidgetクラスにあるすべてのイベントハンドラにアクセスできる必要があります。

これらは、最も一般的なmousePressEventと、右クリックイベントの登録に特に役立つcontextMenuEventを含みます。

カスタムコンテキストメニューcustomContextMenuRequestedを処理するための特定の信号もあります。将来のために

0

は魂を失った、ここで私はそれをやった方法は次のとおりです。私は、「linkClicked(定数QUrl &)」をおを警告する必要がありますが、あなたがこれを行った後

class CQWebView(QtWebKit.QWebView): 

    def mousePressEvent(self, event): 
     if type(event) == QtGui.QMouseEvent: 
      if event.button() == QtCore.Qt.LeftButton: 
       self.emit(QtCore.SIGNAL("FIRST_BUTTON_PRESSED")) 
      elif event.button() == QtCore.Qt.MiddleButton: 
       self.emit(QtCore.SIGNAL("MIDDLE_BUTTON_PRESSED")) 
      elif event.button() == QtCore.Qt.RightButton: 
       self.emit(QtCore.SIGNAL("RIGHT_BUTTON_PRESSED")) 

信号は、放出されることをやめますあなた自身でそれを出す必要があります(私はそれをテストしました、それは可能です)。

関連する問題