code: def wheelEvent(self, ev):
      if ev.modifiers() & QtCore.Qt.ControlModifier:
          zoom = 1 + ev.angleDelta().y() / 2880
          self.zoom_all *= zoom
          oldPos = self.mapToScene(ev.pos())
          if (
              self.zoom_all >= self.zoom_range[0]
              and self.zoom_all <= self.zoom_range[1]
          ):  # 限制缩放的倍数
              self.scale(zoom, zoom)
          newPos = self.mapToScene(ev.pos())
          delta = newPos - oldPos
          self.translate(delta.x(), delta.y())
          ev.ignore()
          self.zoom_all = sorted(
              [self.zoom_range[0], self.zoom_all, self.zoom_range[1]]
          )[1]
          self.zoomRequest.emit(self.zoom_all)
      else:
          super(AnnotationView, self).wheelEvent(ev)
  
file_path: PaddleSeg/EISeg/eiseg/widget/view.py
imports: from qtpy import QtWidgets, QtCore, QtGui
  from qtpy.QtCore import Qt, QPointF
label_desc: Use image node_id 3 for calling the AnnotationView obj's underlying member method code with example usage: obj.wheelEvent(ev) without return types