내 (Py) Qt 응용 프로그램의 QGraphicsView에서 스크롤/팬 기능을 구현하고 싶습니다. 다음과 같이 작동합니다 : 사용자가 가운데 마우스 버튼을 누르면 사용자가 마우스를 움직일 때보기가 스크롤됩니다 (이는 매우 일반적인 기능입니다).
QWidget에서 상속 한 scroll() 메서드를 사용해 보았습니다. 그러나, 어떻게 든 스크롤 막대와 모든 대신보기 이동합니다. 그림을 참조하십시오.
이것이 내가이 일을하기위한 방법이 아니라면 어떻게해야합니까? 아니면 올바른 방법일까요?하지만 그 밖의 뭔가 잘못 됐습니까? 내가 사용하는 코드 :프로그래밍 방식으로 QGraphicsView 스크롤
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])
전체 이동 위젯 비즈니스를 제외하고는 예상대로 작동합니다.
Fails to scroll http://img55.imageshack.us/img55/3222/scrollfail.jpg
어떤 위젯 유형이 self.ui.imageArea입니까? QScrollArea, QGraphicsArea 또는 다른 것입니까? –
오, 텍스트에서 언급하지 않았지만 제목에서. 그것은 QGraphicsView입니다. – carlpett
QGraphicsScene 안에 뷰가 표시하는 QScrollArea가 있습니까? –