Я хочу реализовать функцию прокрутки / панорамирования в QGraphicsView в моем (Py) приложении Qt. Он должен работать следующим образом: пользователь нажимает среднюю кнопку мыши, и прокручивается представление, когда пользователь перемещает мышь (это довольно распространенная функция).
Я пытался использовать метод scroll (), унаследованный от QWidget. Однако вместо этого это как-то перемещает представление - полосы прокрутки и все. Смотри картинку.
Итак, учитывая, что я не должен делать это, как я должен? Или это правильный путь, но я делаю что-то еще не так? Код, который я использую:
def __init__(self):
...
self.ui.imageArea.mousePressEvent=self.evImagePress
self.ui.imageArea.mouseMoveEvent=self.evMouseMove
self.scrollOnMove=False
self.scrollOrigin=[]
...
def evImagePress(self, event):
if event.button() == Qt.LeftButton:
self.evImageLeftClick(event)
if event.button() == Qt.MidButton:
self.scrollOnMove=not self.scrollOnMove
if self.scrollOnMove:
self.scrollOrigin=[event.x(), event.y()]
...
def evMouseMove(self, event):
if self.scrollOnMove:
self.ui.imageArea.scroll(event.x()-self.scrollOrigin[0],
event.y()-self.scrollOrigin[1])
Это работает, как я ожидаю, за исключением всего бизнеса, связанного с перемещением виджетов.
Не в состоянии прокручивать http://img55.imageshack.us/img55/3222/scrollfail.jpg