我想在PyQt5中识别鼠标单击QWidget
。文档中有mouseDoubleClickEvent
或mousePressEvent
,但没有用于单击的mouseClickEvent
功能。如何获得该功能?谢谢
顺便说一句,我注意到PyQtGraph确实有一个mouseClickEvent
函数。
Qt不提供;点击";事件本身,您必须基于mousePressEvent
和mouseReleaseEvent
实现这样一个功能,方法是检查释放是否发生在小部件的几何结构中(可能还有按下并释放了正确的鼠标按钮(。
class ClickWidget(QWidget):
pressPos = None
clicked = pyqtSignal()
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.pressPos = event.pos()
def mouseReleaseEvent(self, event):
# ensure that the left button was pressed *and* released within the
# geometry of the widget; if so, emit the signal;
if (self.pressPos is not None and
event.button() == Qt.LeftButton and
event.pos() in self.rect()):
self.clicked.emit()
self.pressPos = None