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上按下鼠标按钮的时间。
答案 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&)"在你这样做之后,信号不再被发出,所以你需要自己发射信号(我已经测试了它,它是可能的)。