def mouseMoveEvent(self, event): """ Must override mouseMoveEvent of QGraphicsView to allow ScrollHandDrag due to the fact that events are intercepted breaks this feature. """ if self._transform_enable: if self.dragMode() == self._yes_drag: # Add stuff to handle the pan event posf = event.localPos() xf = posf.x() yf = posf.y() factor = self.transform().m11() transform = self.scene_root_item.transform() transform.translate((xf - self._x0) / factor, (yf - self._y0) / factor) self.scene_root_item.setTransform(transform) self._x0 = xf self._y0 = yf elif self._dolly_zoom_enable: self.dollyZoom(event) # adding this allows events to be passed to items underneath QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event): if self.hasImage(): # Make sure that the element has focus when the mouse moves, # otherwise keyboard shortcuts will not work if not self.hasFocus(): self.setFocus() self.update_cursor_location(event) # Support for panning if event.buttons() == Qt.MiddleButton: offset = self.__prevMousePos - event.pos() self.__prevMousePos = event.pos() self.verticalScrollBar().setValue( self.verticalScrollBar().value() + offset.y()) self.horizontalScrollBar().setValue( self.horizontalScrollBar().value() + offset.x()) # Filling in the markers if event.buttons() == Qt.LeftButton: self.drawMarkerLine(event) # Store cursor location separately; needed for certain operations (like fill) self.lastCursorLocation = self.mapToScene(event.pos()) QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event: QMouseEvent) -> None: """ :param event: :return: """ if not self._is_move: flag = True if self.gadget == ToolsToolBar.PolygonTool and self.is_creating_polygon: try: path = self.counter_polygon_path(event.pos()) self.border.set_item_path_by_path(path=path) event.accept() flag = False except Exception as e: print(e) elif self.gadget == ToolsToolBar.EraserTool: self.eraser_action(event.pos()) event.accept() return elif self.is_mouse_pressed: self.is_dragging = True self.has_moving_mouse = True self.dragging_signal.emit(event) event.accept() flag = False if flag: QGraphicsView.mouseMoveEvent(self, event) else: GraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event): QGraphicsView.mouseMoveEvent(self, event) #update selection display if self.rubberBand is not None: self.rubberBand.setGeometry( QRect(self.start_drag, event.pos()).normalized()) if self.panning: scene_end_drag = self.mapToScene(event.pos()) end_drag = event.pos() pan_vector = end_drag - self.start_drag scene2view = self.transform() #skip shear sx = scene2view.m11() sy = scene2view.m22() dx = scene2view.dx() dy = scene2view.dy() scene_pan_vector = QPointF(pan_vector.x() / sx, pan_vector.y() / sy) roi = self.current_scene_ROI top_left = roi.topLeft() new_top_left = top_left - scene_pan_vector scene_rect = self.sceneRect() new_top_left.setX( clamp(new_top_left.x(), scene_rect.left(), scene_rect.right())) new_top_left.setY( clamp(new_top_left.y(), scene_rect.top(), scene_rect.bottom())) nroi = QRectF(new_top_left, roi.size()) self.fitInView(nroi, Qt.KeepAspectRatio) self.start_drag = end_drag self.update()
def mouseMoveEvent(self, event): QGraphicsView.mouseMoveEvent(self, event) scenePos = self.mapToScene(event.pos()) if self.showCrossair == True: self.mouseCoords = scenePos self.scene.invalidate(self.sceneRect(), QGraphicsScene.ForegroundLayer) if event.buttons() == Qt.LeftButton: (x, y) = self.clipScenePos(scenePos) if self.dragSelectionStart: start = self.dragSelectionStart if not self.dragSelectionRect: self.dragSelectionRect = self.scene.addRect( start[0], start[1], x - start[0], y - start[1], self.dragSelectionStyle) self.dragSelectionRect.setRect(start[0], start[1], x - start[0], y - start[1]) return if Qt.ControlModifier & QApplication.queryKeyboardModifiers(): return self.tools.mouseMove(x, y)
def mouseMoveEvent(self, event): if self.event and self.click: self.selection = True event_pos = self.mapToScene(event.pos()) if self.selection and self.click: if self.event_origin: self.statusChanged.emit(self.event_origin.x(), self.event_origin.y(), event_pos.x(), event_pos.y()) if event_pos.x() < 0: event_pos.setX(0) elif event_pos.x() > self.scene_size[0] - 1: event_pos.setX(self.scene_size[0] - 1) if event_pos.y() < 0: event_pos.setY(0) elif event_pos.y() > self.scene_size[1] - 1: event_pos.setY(self.scene_size[1] - 1) self.ROI_item.setRect( QRectF(self.event_origin, event_pos).normalized()) else: pass else: QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event): """Only works when mouse button is pressed. TODO: how to work when there is no mouse button is pressed. """ # Show mouse position and color when mouse move with button pressed if self.show_info: scene_pos = self.mapToScene(event.pos()) x_scene, y_scene = scene_pos.x(), scene_pos.y() self.show_mouse_position(x_scene, y_scene) self.show_mouse_color(x_scene, y_scene) modifiers = QApplication.keyboardModifiers() if modifiers == QtCore.Qt.ShiftModifier: if event.buttons() == QtCore.Qt.LeftButton: # Show selection rect position if self.show_info: ori_scene_pos = self.mapToScene(self.rubber_band_origin) ori_x_scene, ori_y_scene = ori_scene_pos.x( ), ori_scene_pos.y() self.show_rect_position(ori_x_scene, ori_y_scene, x_scene, y_scene) # Show rubber band if self.rubber_band_changable: self.rubber_band.setGeometry( QRect(self.rubber_band_origin, event.pos()).normalized()) else: QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event): """ Must reimplement mouseMoveEvent of QGraphicsView to allow ScrollHandDrag due to the fact that events are intercepted breaks this feature. """ if self._transform_enable == True: if self.dragMode() == self._yes_drag: # Add stuff to handle the pan event posf = event.localPos() xf = posf.x() yf = posf.y() factor = self.transform().m11() transform = self.scene_root_item.transform() transform.translate((xf - self._x0)/factor,\ (yf - self._y0)/factor) self.scene_root_item.setTransform(transform) self._x0 = xf self._y0 = yf elif self._dolly_zoom_enable == True: self.dollyZoom(event) # adding this allows events to be passed to items underneath QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event): if self.rband_state == "set-endpoint": self.rband.setGeometry( QRect(self.rband_origin, event.pos()).normalized()) self.rband_endpoint = event.pos() elif self.rband_state == "set-origin": self.rband.setGeometry( QRect(event.pos(), self.rband_endpoint).normalized()) self.rband_origin = event.pos() elif self.rband_state == "move": old_pos = self.rband.geometry() new_pos = old_pos.translated(event.pos() - self.rband_previous_pos) trace(0) self.rband.setGeometry(new_pos) self.rband_previous_pos = event.pos() elif self.rband_state == "drawn": if ImageView.close_enough(self.rband_origin, event.pos()): self.rband_corner = "nw" self.setCursor(QCursor(Qt.SizeFDiagCursor)) elif ImageView.close_enough(self.rband_endpoint, event.pos()): self.rband_corner = "se" self.setCursor(QCursor(Qt.SizeFDiagCursor)) elif self.rband.geometry().contains(event.pos()): self.rband_corner = "inside" self.setCursor(QCursor(Qt.OpenHandCursor)) else: self.rband_corner = None self.setCursor(QCursor(Qt.ArrowCursor)) QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: if not self.__autoScrollTimer.isActive() and \ self.__shouldAutoScroll(event.pos()): self.__startAutoScroll() QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event): QGraphicsView.mouseMoveEvent(self, event) scenePos = self.mapToScene(event.pos()) if event.buttons() == Qt.LeftButton: clippedCoords = self.clipScenePos(scenePos) self.mouseMoveLeftPressed.emit(clippedCoords[0], clippedCoords[1])
def mouseMoveEvent(self, event): """Overload QGraphicsView method.""" if event.buttons() == Qt.MiddleButton: # panning delta = event.pos() - self._previous_position self.translate(delta.x(), delta.y()) self._previous_position = event.pos() # forwarding QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, mouse_event): if self._last_pan_point is not None: delta_scene = self.mapToScene(mouse_event.pos()) - self.mapToScene( self._last_pan_point) if not delta_scene.isNull(): self.centerOn(self._last_scene_center - delta_scene) self._last_scene_center -= delta_scene self._last_pan_point = mouse_event.pos() QGraphicsView.mouseMoveEvent(self, mouse_event)
def mouseMoveEvent(self, QMouseEvent): scenePos = self.mapToScene(QMouseEvent.pos()) row = int(scenePos.y()) column = int(scenePos.x()) # print("Clicked on image pixel (row=" + str(row) + ", column=" + str(column) + ")") if self.lbtnpress: self.Moustmove_leftMouseButtonClicked.emit(int(scenePos.x()), int(scenePos.y())) QGraphicsView.mouseMoveEvent(self, QMouseEvent)
def mouseMoveEvent(self, event): """ Hover event to signal position and gray level. """ if self.npImage is not None: # To fix a bug while pan: self.scene.update() # Get position in image space (watch what is x and what is y!): scenePos = self.mapToScene(event.pos()) x = np.floor(scenePos.x()).astype(np.int32) y = np.floor(scenePos.y()).astype(np.int32) # Check boundaries: if ((x >= 0) and (x <= (self.npImage.shape[1] - 1)) and \ (y >= 0) and (y <= (self.npImage.shape[0] - 1))): # Emit signal with coordinates and gray value: self.mouseHoverEvent.emit(x, y, self.npImage[y, x], self.imageFormat) else: # Emit a "out-of-border" signal: self.mouseHoverEvent.emit(-1, -1, -1, 'None') # This code is called also after a mouse wheel event: if not isinstance(event, QWheelEvent): QGraphicsView.mouseMoveEvent(self, event) if (self.__rightMouseDown) and (self.__WLDownPos is not None): # Apply window/level correction: winWidth = self.winMax - self.winMin winOffset = self.winMin + winWidth / 2 # To be adapted: deltaX = (self.__WLDownPos.x() - event.pos().x()) * winWidth / 255.0 deltaY = (self.__WLDownPos.y() - event.pos().y()) * winWidth / 255.0 winOffset -= deltaY winWidth -= deltaX self.winMax = winOffset + winWidth / 2 self.winMin = winOffset - winWidth / 2 # Reset conditions: if (self.winMin >= self.winMax): self.winMin = np.amin(self.npImage.astype(np.float32)) if (self.winMax <= self.winMin): self.winMax = np.amax(self.npImage.astype(np.float32)) self._updateImageLUT() self.__WLDownPos = event.pos()
def mouseMoveEvent(self, event): scenePos = self.mapToScene(event.pos()) self.sX = int(round(scenePos.x())) self.sY = int(round(scenePos.y())) self.mainWindow.CursorXY.setText('x:%4d y:%4d ' % (self.sX, GlobalData.imgHeight - self.sY)) ##put coordinate as text QGraphicsView.mouseMoveEvent(self, event) if self.isPanning is True and self.mouseLeftPress is True: self.GetFrame() self.YellowBox = self.mainWindow.qtSceneViewer.DrawViewBox( self.ViewRectX, self.ViewRectY, self.ViewRectWidth, self.ViewRectHeight)
def mouseMoveEvent(self, event): QGraphicsView.mouseMoveEvent(self, event) scenePos = self.mapToScene(event.pos()) if event.buttons() == Qt.LeftButton: clippedCoords = self.clipScenePos(scenePos) self.mouseMoveLeftPressed.emit(clippedCoords[0], clippedCoords[1]) if self.showCrossair == True: self.mouseCoords = scenePos self.scene.invalidate(self.sceneRect(), QGraphicsScene.ForegroundLayer)
def mouseMoveEvent(self, event): if self._pan_from == None: QGraphicsView.mouseMoveEvent(self, event) else: if not self.scene().prevent_mouse_release_deselect: # yet self.setCursor(Qt.ClosedHandCursor) self.scene().prevent_mouse_release_deselect = True self.horizontalScrollBar().setValue( self.horizontalScrollBar().value() - event.x() + self._pan_from.x()) self.verticalScrollBar().setValue( self.verticalScrollBar().value() - event.y() + self._pan_from.y()) self._pan_from = event.pos() event.accept()
def mouseMoveEvent(self, event): if self.changeRubberBand: # update rubber self.rubberBand.setGeometry(QRect(self.origin, event.pos()).normalized()) self.rubberBandScenePos = self.mapToScene(self.rubberBand.geometry()) if event.buttons() & Qt.MidButton: # drag image offset = self.dragPrevMousePos - event.pos() self.dragPrevMousePos = event.pos() self.verticalScrollBar().setValue(self.verticalScrollBar().value() + offset.y()) self.horizontalScrollBar().setValue(self.horizontalScrollBar().value() + offset.x()) self.updateRubberBandDisplay() QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event): QGraphicsView.mouseMoveEvent(self, event) fullState = self.parentView.uiState.parent() scenePos = self.mapToScene(event.pos()) zAt = zStackForUiState(self.parentView.uiState) * 1.0 location = (scenePos.x(), scenePos.y(), zAt) circleOver = None if self.parentView.uiState.parent().inPunctaMode(): circleOver = self.parentView.punctaOnPixel(location) else: circleOver = self.parentView.pointOnPixel(location) self.viewport().setCursor( Qt.OpenHandCursor if circleOver is not None else Qt.ArrowCursor)
def mouseMoveEvent(self, e): """ Move CENTER othervise zoom at scroll works incorrectly. """ QGraphicsView.mouseMoveEvent(self, e) if self._scale_ctl == 0: return if self.click_pos is None: return dp = e.pos() - self.click_pos dx = dp.x() / self.transform().m11() if self._scale_ctl & 1 else 0 dy = dp.y() / self.transform().m22() if self._scale_ctl & 2 else 0 sc = self.scene() rs = sc.sceneRect() rs.moveCenter(self.rs_center - QPointF(dx, dy)) sc.setSceneRect(rs)
def mouseMoveEvent(self, e): QGraphicsView.mouseMoveEvent(self, e) #logger.debug('FWView.mouseMoveEvent, at point: %s' % str(e.pos())) self.mouse_move_event.emit(e) if self._scale_ctl==0: return if self.pos_click is None: return dp = e.pos() - self.pos_click dx = dp.x() / self.transform().m11() if self._scale_ctl & 1 else 0 dy = dp.y() / self.transform().m22() if self._scale_ctl & 2 else 0 sc = self.scene() rs = sc.sceneRect() rs.moveCenter(self.rs_center - QPointF(dx, dy)) sc.setSceneRect(rs) if self.signal_fast: self.emit_signal_if_scene_rect_changed()
def mouseMoveEvent(self, e): QGraphicsView.mouseMoveEvent(self, e) #print('FWView.mouseMoveEvent, at point: ', e.pos()) #self.emit(QtCore.SIGNAL('mouse_move_event(QMouseEvent)'), e) self.mouse_move_event.emit(e) if self._scale_ctl == 0: return if self.pos_click is None: return dp = e.pos() - self.pos_click dx = dp.x() * self.invscalex if self._scale_ctl & 1 else 0 dy = dp.y() * self.invscaley if self._scale_ctl & 2 else 0 dpsc = QPointF(dx, dy) sc = self.scene() rs = sc.sceneRect() rs.moveCenter(self.rs_center - dpsc) sc.setSceneRect(rs)
def mouseMoveEvent(self, event): if self._pan: self.horizontalScrollBar().setValue( self.horizontalScrollBar().value() - (event.x() - self._panStartX)) self.verticalScrollBar().setValue( self.verticalScrollBar().value() - (event.y() - self._panStartY)) self._panStartX = event.x() self._panStartY = event.y() event.accept() else: return QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, mouseEvent): if self._panning: delta = self.mapToScene(self._lastPanPoint) - self.mapToScene( mouseEvent.pos()) self._lastPanPoint = mouseEvent.pos() self.center += delta # If cutting connections elif self._cutStartPosition is not None: start_scene_pos = self._cutStartPosition current_scene_pos = self.mapToScene(mouseEvent.pos()) path = QPainterPath() path.moveTo(start_scene_pos) path.lineTo(current_scene_pos) self._slicePath = path # Set new visual path self._drawPathItem.setPath(path) else: QGraphicsView.mouseMoveEvent(self, mouseEvent)
def mouseMoveEvent(self, event): self._mouse_location.set_value(self.mapToScene(event.pos()), self._scale, self) QGraphicsView.mouseMoveEvent(self, event)
def accept_mouseMove(self, event): if self.hasImage(): QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event): if self.hasImage(): self.mouseButtonMove.emit(event) #发送鼠标左键移动信号 QGraphicsView.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event): sp = self.mapToScene(event.pos()) if self.bResizing: #if we're resizing an area item = self.resizingArea r = item.rect() pos = item.pos() newWidth = r.width() newHeight = r.height() newX, newY = pos.x(), pos.y() if self.resizingEdge & 1: #bit mask: top is moving #max ensures that y >= 0 newY = max(0, self.resizingAreaPos.y() + sp.y() - \ self.resizingStartingPos.y()) newHeight = self.resizingAreaRect.height() + \ self.resizingAreaPos.y() - newY elif self.resizingEdge & 2: #bit mask: bottom is moving newHeight = self.resizingAreaRect.height() + sp.y() - \ self.resizingStartingPos.y() #force area to be inside the scene if newY + newHeight > self.scene().height(): newHeight = self.scene().height() - newY if self.resizingEdge & 4: #bit mask: right is moving newX = max(0, self.resizingAreaPos.x() + sp.x() - \ self.resizingStartingPos.x()) newWidth = self.resizingAreaRect.width() + \ self.resizingAreaPos.x() - newX elif self.resizingEdge & 8: #bit mask: right is moving newWidth = self.resizingAreaRect.width() + sp.x() - \ self.resizingStartingPos.x() #force area to be inside the scene if newX + newWidth > self.scene().width(): newWidth = self.scene().width() - newX #check that height >= OcrArea.resizeBorder if newHeight < 2*OcrArea.resizeBorder: newHeight = r.height() newY = pos.y() #check that width >= OcrArea.resizeBorder if newWidth < 2*OcrArea.resizeBorder: newWidth = r.width() newX = pos.x() item.setRect(0, 0, newWidth, newHeight) item.setPos(newX, newY) else: # if not resizing # grabbing the position of the widget sp = self.mapToScene(event.pos()) ret = self.scene().areaAt(sp) edge = ret % 100 iArea = ret / 100 cursors = {0:Qt.SizeAllCursor, 1: Qt.SizeVerCursor, 2: Qt.SizeVerCursor, 4: Qt.SizeHorCursor, 5: Qt.SizeFDiagCursor, 6: Qt.SizeBDiagCursor, 8: Qt.SizeHorCursor, 9: Qt.SizeBDiagCursor, 10: Qt.SizeFDiagCursor} if iArea: self.setCursor(cursors[edge]) else: # mouse not over an area self.setCursor(Qt.CrossCursor) QGraphicsView.mouseMoveEvent(self, event)
def inputGraphicsViewMouseMoveEvent(self, event): if event.modifiers() == QtCore.Qt.ShiftModifier: # Comment out to permit the view for sending the event to the child scene. QGraphicsView.mouseMoveEvent(self.inputGraphicsView, event) elif self.drawingFlag == True: pass
def mouseMoveEvent(self, event): QGraphicsView.mouseMoveEvent(self, event) scenePos = self.mapToScene(event.pos()) self.mouseMoveLoc.emit(scenePos.x(), scenePos.y())
def mouseMoveEvent(self, e: QtGui.QMouseEvent) -> None: x = e.localPos().x() if e.localPos().x() > self.width(): print(1) e.localPos().x() QGraphicsView.mouseMoveEvent(self, e)
def mouseMoveEvent(self, event): sp = self.mapToScene(event.pos()) if self.bResizing: #if we're resizing an area item = self.resizingArea r = item.rect() pos = item.pos() newWidth = r.width() newHeight = r.height() newX, newY = pos.x(), pos.y() if self.resizingEdge & 1: #bit mask: top is moving #max ensures that y >= 0 newY = max(0, self.resizingAreaPos.y() + sp.y() - \ self.resizingStartingPos.y()) newHeight = self.resizingAreaRect.height() + \ self.resizingAreaPos.y() - newY elif self.resizingEdge & 2: #bit mask: bottom is moving newHeight = self.resizingAreaRect.height() + sp.y() - \ self.resizingStartingPos.y() #force area to be inside the scene if newY + newHeight > self.scene().height(): newHeight = self.scene().height() - newY if self.resizingEdge & 4: #bit mask: right is moving newX = max(0, self.resizingAreaPos.x() + sp.x() - \ self.resizingStartingPos.x()) newWidth = self.resizingAreaRect.width() + \ self.resizingAreaPos.x() - newX elif self.resizingEdge & 8: #bit mask: right is moving newWidth = self.resizingAreaRect.width() + sp.x() - \ self.resizingStartingPos.x() #force area to be inside the scene if newX + newWidth > self.scene().width(): newWidth = self.scene().width() - newX #check that height >= OcrArea.resizeBorder if newHeight < 2 * OcrArea.resizeBorder: newHeight = r.height() newY = pos.y() #check that width >= OcrArea.resizeBorder if newWidth < 2 * OcrArea.resizeBorder: newWidth = r.width() newX = pos.x() item.setRect(0, 0, newWidth, newHeight) item.setPos(newX, newY) else: # if not resizing # grabbing the position of the widget sp = self.mapToScene(event.pos()) ret = self.scene().areaAt(sp) edge = ret % 100 iArea = ret / 100 cursors = { 0: Qt.SizeAllCursor, 1: Qt.SizeVerCursor, 2: Qt.SizeVerCursor, 4: Qt.SizeHorCursor, 5: Qt.SizeFDiagCursor, 6: Qt.SizeBDiagCursor, 8: Qt.SizeHorCursor, 9: Qt.SizeBDiagCursor, 10: Qt.SizeFDiagCursor } if iArea: self.setCursor(cursors[edge]) else: # mouse not over an area self.setCursor(Qt.CrossCursor) QGraphicsView.mouseMoveEvent(self, event)