как перемещаться по сцене с помощью мыши
я хочу перемещаться по сцене с помощью мыши а не с скролБаром. я сделал код в скролАреи недавно там он прекрасно работает сегодня я пытался сделать это в сцене. Скопировал код из файла и вставил в данный и отредоктировал но нечего не работает. пытался понять что не так я заметил что event обробатываеться тока при Enter. В остальных случаях он отвечает нет. мой код:
class main(QtWidgets.QWidget):
def setupUI(self):
self.resize(500,500)
self.scene = QGraphicsScene(self)
self.view = QGraphicsView(self)
self.view.setScene(self.scene)
self.scene.addItem(MoveObject(10,10,10))
# self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
# self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.scene.addItem(grahics())
self.scene.addItem(wid(10,10))
self.view.setGeometry(QRect(0,0,450,450))
self.view.installEventFilter(self)
def eventFilter(self, obj , event):
if obj is self.view :
print(f"{event.type()} _move_ {QEvent.Type.MouseMove} _enter_ {QEvent.Type.MouseButtonPress} _realease_ {QEvent.Type.MouseButtonRelease}")
print("yes" if event.type() in {QEvent.Type.MouseMove,QEvent.Type.MouseButtonPress,QEvent.Type.MouseButtonRelease} else "no")
if event.type() == QEvent.Type.MouseMove:
if self.start < event.x():
self.view.horizontalScrollBar().setValue(self.view.horizontalScrollBar().value()-1)
self.start = event.x()
elif self.start > event.x():
self.view.horizontalScrollBar().setValue(self.view.horizontalScrollBar().value()+1)
self.start = event.x()
elif event.type() == QEvent.Type.MouseButtonPress:
self.start = event.x()
elif event.type() == QEvent.Type.MouseButtonRelease:
self.start = None
return super().eventFilter(obj , event)
Ответы (1 шт):
Автор решения: Aix Play
→ Ссылка
Во первых начнём с того, пишите вы через код или через Qt Designer? Во вторых разбирая ваш код, я нашёл ошибки: Unresolved reference 'MoveObject', grahics, wid. Но код из текста, всё равно мало понятен. Добавьте ещё скрины из своего проекта. Чтобы понять что именно вы хотите сделать.