[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:
Jay Young 2017-03-08 12:30:12 +08:00
parent 4d1ed6f7e6
commit f631ce9339

View File

@ -512,16 +512,29 @@ class Canvas(QWidget):
return super(Canvas, self).minimumSizeHint()
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()
if Qt.ControlModifier == int(mods):
self.zoomRequest.emit(ev.delta())
self.zoomRequest.emit(v_delta)
else:
self.scrollRequest.emit(ev.delta(),
self.scrollRequest.emit(v_delta,
Qt.Horizontal if (Qt.ShiftModifier == int(mods))
else Qt.Vertical)
else:
self.scrollRequest.emit(ev.delta(), Qt.Horizontal)
self.scrollRequest.emit(h_delta, Qt.Horizontal)
ev.accept()
def keyPressEvent(self, ev):