2009-05-29 35 views
3

私のアプリケーションでは、QGraphicsSceneにpixmapが追加されており、すべてスクロールバーがオフのQGraphicsViewで表示されます。 プログラムウィンドウはpixmapより小さく、矢印キーを押すかマウスホイールを動かすと、pixmapが移動しています。QGraphicsView - マウスとキーボードのスクロールを無効にする方法

これを無効にするにはどうすればよいですか?ピックスマップがウィンドウより大きい場合でも、イベントを使用しない限りキーボードやマウスで移動されません。

(私はfalseにインタラクティブプロパティを設定しようとしましたが、それは動作しませんでした)

答えて

6

QGraphicsViewのFocusPolicyをNoFocusに設定し、メインウィンドウのすべてのキーイベントを処理するのが最も簡単な解決策だと思います。

0

もっと簡単な方法があります場合、私は知らないが、適度に簡単な方法は、あなたのQGraphicsViewを継承するクラスを作ることであろうマウスとキープレスのイベントをオーバーライドします。

より困難な方法は、ウィジェットにイベントフィルタをインストールすることです。

私の意見では、一番難しいのは、何らかの信号によって変化を検出し、それを元の状態に戻すことです。

3

私は簡単な方法は、ビューを視覚化することが許可されている領域を設定するQGraphicsView::setSceneRect()を使用することだと思います。

ビューのsceneRect()をビューウィジェットの実際のサイズ(またはわずかに小さい)に設定すると、この四角形の外側でスクロールまたはパンすることはできません。

関連する問題