да, вы можете изменить курсор панорамирования.
Пожалуйста, измените часть вашего кода на эти.
def mousePressEvent(self, event):
if event.button() == Qt.MidButton:
self.viewport().setCursor(Qt.ClosedHandCursor)
self.original_event = event
handmade_event = QMouseEvent(QEvent.MouseButtonPress,QPointF(event.pos()),Qt.LeftButton,event.buttons(),Qt.KeyboardModifiers())
self.mousePressEvent(handmade_event)
#Im Sure I have to do something here.
super(PhotoViewer, self).mousePressEvent(event)
def mouseReleaseEvent(self, event):
if event.button() == Qt.MidButton:
#for changing back to Qt.OpenHandCursor
self.viewport().setCursor(Qt.OpenHandCursor)
handmade_event = QMouseEvent(QEvent.MouseButtonRelease,QPointF(event.pos()),Qt.LeftButton,event.buttons(),Qt.KeyboardModifiers())
self.mouseReleaseEvent(handmade_event)
super(PhotoViewer, self).mouseReleaseEvent(event)
Пояснение
Для изменения изображения курсора мыши на QGraphicsView
, в основном,
QGraphicsView.vieport().setCursor()
Почему Qt.LeftButton
может изменить курсор по умолчанию?
Я думаю, что это настройка по умолчанию. Вероятно, разработчик Qt
предсказывает, что пользователи хотят, чтобы экран панорамировал, нажимая левую кнопку, когда форма курсора OpenHandCursor
.
Так что, вероятно, вы не можете удерживать курсор "открыть "на случай LeftButton
наоборот.Он встроен в super(PhotoViewer, self).mousePressEvent(event)
Мы не сможем подключить содержимое.Таким образом, вы не хотите, чтобы изменения вносились LeftMouse, вы пишете return и пишете здесь другую команду.
Объект события ручной работы
Если вы нажмете MidButton
, выСделайте LeftButton
MouseEvent самостоятельно, и вы передадите его mousePressEvent.mousePressEvent
принимает его и обрабатывает, как если бы это было событие leftButton
.
Если вы поместите код ручной работы только в mousePressEvent
, вы не сможете сбежать из ловушки.Вы также помещаете код ручной работы в mouseReleaseEvent
.
Perfect. Это зависит от того, что вы пишете команды в обработчике событий.Если вы не хотите, чтобы leftButton панорамировал, вы делаете то же самое в нем.То есть вы можете переключать события между LeftButton
и MidButton
!