如何检测QWebView上是否按下了鼠标按钮?

时间:2016-05-21 15:50:43

标签: python pyqt

使用PyQt4

I'm developing a Web Browser,这是创建QWebViews的代码部分:

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上按下鼠标按钮的时间。

2 个答案:

答案 0 :(得分:1)

QWebView的文档中,您可以看到此类继承自QWidget。这意味着它应该可以访问QWidget类中找到的所有事件处理程序。

其中包括mousePressEvent,这是最通用的,contextMenuEvent专门用于注册右键单击事件。

还有一个特定的信号用于处理可能感兴趣的自定义上下文菜单customContextMenuRequested

答案 1 :(得分:0)

对于未来失去的灵魂,我在这里是如何做到的:

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"))

虽然我必须警告你,但是" linkClicked(const QUrl&)"在你这样做之后,信号不再被发出,所以你需要自己发射信号(我已经测试了它,它是可能的)。