Hello,
I am trying to handle single and double-click events differently in a
QToolButton.
>From what I have read in forums, Qt does not filter out single click events
>when a double click occurs, in other words there will always be a
>mousePressEvent emitted even if it's actually a double-click. The recommended
>approach in C++ appears to be launching a timer and deferring single click
>handling.
a) If there is a better approach, please let me know!
b) I tried the implementation below, but in the timerExpired function I get the
dreaded "Internal C++ object (PySide2.QtGui.QMouseEvent) already deleted"
error. I guess storing it in a member variable is insufficient?
class QToolButtonTest(QToolButton):
def __init__(self, parent = None):
super().__init__(parent)
self.timer = None
def cancelTimer(self):
if self.timer:
self.timer.stop()
self.timer = None
self.mousePressData = None
def timerExpired(self):
super().mousePressEvent(self.mousePressData)
self.cancelTimer()
def mousePressEvent(self, event):
if not self.timer:
self.mousePressData = event
self.timer = QTimer(self)
self.timer.timeout.connect(self.timerExpired)
self.timer.setSingleShot(True)
self.timer.start(1000)
def mouseDoubleClickEvent(self, event):
self.cancelTimer()
super().mouseDoubleClickEvent(event)
_______________________________________________
PySide mailing list
[email protected]
https://lists.qt-project.org/listinfo/pyside