[FIX]in PyQT5, scroll does not work, because PyQT5 deprecated the orientation and delte method under QWheelEvent and replaced by angleDelta, so I add some code to detect what version of qt and use the correspond method to get delta
This commit is contained in:
parent
4d1ed6f7e6
commit
f631ce9339
@ -512,16 +512,29 @@ class Canvas(QWidget):
|
|||||||
return super(Canvas, self).minimumSizeHint()
|
return super(Canvas, self).minimumSizeHint()
|
||||||
|
|
||||||
def wheelEvent(self, ev):
|
def wheelEvent(self, ev):
|
||||||
if ev.orientation() == Qt.Vertical:
|
qt_version = 4 if hasattr(ev, "delta") else 5
|
||||||
|
if qt_version == 4:
|
||||||
|
if ev.orientation() == Qt.Vertical:
|
||||||
|
v_delta = ev.delta()
|
||||||
|
h_delta = 0
|
||||||
|
else:
|
||||||
|
h_delta = ev.delta()
|
||||||
|
v_delta = 0
|
||||||
|
else:
|
||||||
|
delta = ev.angleDelta()
|
||||||
|
h_delta = delta.x()
|
||||||
|
v_delta = delta.y()
|
||||||
|
|
||||||
|
if v_delta:
|
||||||
mods = ev.modifiers()
|
mods = ev.modifiers()
|
||||||
if Qt.ControlModifier == int(mods):
|
if Qt.ControlModifier == int(mods):
|
||||||
self.zoomRequest.emit(ev.delta())
|
self.zoomRequest.emit(v_delta)
|
||||||
else:
|
else:
|
||||||
self.scrollRequest.emit(ev.delta(),
|
self.scrollRequest.emit(v_delta,
|
||||||
Qt.Horizontal if (Qt.ShiftModifier == int(mods))
|
Qt.Horizontal if (Qt.ShiftModifier == int(mods))
|
||||||
else Qt.Vertical)
|
else Qt.Vertical)
|
||||||
else:
|
else:
|
||||||
self.scrollRequest.emit(ev.delta(), Qt.Horizontal)
|
self.scrollRequest.emit(h_delta, Qt.Horizontal)
|
||||||
ev.accept()
|
ev.accept()
|
||||||
|
|
||||||
def keyPressEvent(self, ev):
|
def keyPressEvent(self, ev):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user