检测 PyQt5 Widgets 中的单次鼠标单击 - 缺少 mouseClickEvent 函数

sir*_*ria 5 python qt pyqt qt5 pyqt5

我想识别QWidgetPyQt5 中鼠标单击 a 的情况。在文档中,有mouseDoubleClickEvent或 ,mousePressEvent但没有mouseClickEvent单击的功能。我如何获得该功能?谢谢

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

mus*_*nte 6

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
Run Code Online (Sandbox Code Playgroud)