在PyQt5小工具中检测鼠标单击-缺少mouseClickEvent函数



我想在PyQt5中识别鼠标单击QWidget。文档中有mouseDoubleClickEventmousePressEvent,但没有用于单击的mouseClickEvent功能。如何获得该功能?谢谢

顺便说一句,我注意到PyQtGraph确实有一个mouseClickEvent函数。

Qt不提供;点击";事件本身,您必须基于mousePressEventmouseReleaseEvent实现这样一个功能,方法是检查释放是否发生在小部件的几何结构中(可能还有按下并释放了正确的鼠标按钮(。

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

最新更新