Python 区分Qt中按下的按钮和拖动的按钮?

Python 区分Qt中按下的按钮和拖动的按钮?,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,根据,我能够在我的QToolButton上实现拖动功能,但这覆盖了标准的按钮单击行为,我无法检查按钮是否被按下或是否有通过拖动鼠标开始拖动的意图。 这是我的QToolBar 类toolbarButtonQToolButton: def u_init__self,父项=无,项=无: 超级工具栏按钮,自。\u初始化\u父级 self.setIcon。。。 self.setIconSizeQSize40,40 self.dragStartPosition=0 ... def鼠标presseventse

根据,我能够在我的QToolButton上实现拖动功能,但这覆盖了标准的按钮单击行为,我无法检查按钮是否被按下或是否有通过拖动鼠标开始拖动的意图。 这是我的QToolBar

类toolbarButtonQToolButton: def u_init__self,父项=无,项=无: 超级工具栏按钮,自。\u初始化\u父级 self.setIcon。。。 self.setIconSizeQSize40,40 self.dragStartPosition=0 ... def鼠标presseventself,事件: 如果event.button==Qt.LeftButton: self.dragStartPosition=event.pos def mouseMoveEventself,事件: 如果不是event.button和Qt.LeftButton: 回来 如果event.pos-self.dragStartPosition.manhattanLength我最初的想法是在距离小于startdragdistance时添加发射,但这是不正确的,因为每次我移动鼠标时它都会发射。在PyQt5中是否有实现这一点的方法?是否在按下按钮时获得标准的QToolButton行为,在拖动按钮时获得自定义行为?

当您覆盖一个方法时,您将删除默认行为,这样就不会发生这种情况,那么您必须通过super调用父方法:

def mousePressEvent(self, event):
    super().mousePressEvent(event)
    if event.button() == Qt.LeftButton:
        self.dragStartPosition = event.pos()

尝试在event.button==Qt之前添加super.mousePressEventevent.LeftButton:Oh wow。。。是的,这很有效!你能把你的评论贴出来作为答案吗?这样我就可以把它标记为答案了?