私は、(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はありますか? –