4

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

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

(インタラクティブプロパティをfalseに設定しようとしましたが、機能しませんでした)

4

3 に答える 3

6

最も簡単な解決策は、QGraphicsViewのFocusPolicyをNoFocusに設定してから、メインウィンドウですべての主要なイベントを処理することだと思います。

ui->graphicsView->setFocusPolicy( Qt::NoFocus );
于 2009-05-30T09:05:55.457 に答える
4

QGraphicsView::setSceneRect()ビューが視覚化できる領域を設定する のが簡単な方法だと思います。

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

于 2010-08-16T23:08:02.027 に答える
0

より簡単な方法があるかどうかはわかりませんが、適度に簡単な方法は、QGraphicsViewクラスを継承し、マウスとキーの押下イベントをオーバーライドするクラスを作成することです。

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

私の意見では、最も難しい解決策は、ある種の信号を介して変化を検出し、それを元の状態に戻すことです。

于 2009-05-29T14:12:54.827 に答える