QGraphicsView - マウスとキーボードスクロールを無効にする方法
-
06-09-2019 - |
質問
私のアプリケーションでは、私はピックスマップを追加し、すべてのスクロールバーをオフにしてQGraphicsViewで表示されてQGraphicsSceneを持っています。 プログラムウィンドウは、ピックスマップ、その後小さく、私は矢印キーを押すか、マウスホイールを動かすとピックスマップが移動されてます。
私はピックスマップがウィンドウよりも大きいので、場合でも、私はそれのための私のイベントを使用しない限り、それは、キーボードやマウスによって移動されないことを無効にする方法を教えてください。
(私はfalseにインタラクティブプロパティを設定しようとしましたが、それは動作しませんでした)。
解決
私は、最も簡単な解決策はNoFocusにQGraphicsViewのFocusPolicyを設定し、メインウィンドウ内のすべてのキーイベントを処理するだろうと考えています。
ui->graphicsView->setFocusPolicy( Qt::NoFocus );
他のヒント
私は簡単な方法は、ビューを視覚化することが許可されている領域を設定するQGraphicsView::setSceneRect()
を使用することだと思います。
sceneRect()
を設定した場合は、、スクロールしたり、この矩形の外にパンすることができません。
もっと簡単な方法があります場合、私は知らないが、適度に簡単な方法は、あなたのQGraphicsViewクラスを継承するクラスを作ることであろうと、マウスやキープレスイベントを上書きします。
難しい方法は、ウィジェット上でイベントフィルタをインストール伴うだろう。
私の意見では、最も困難なブルートフォースソリューションは、信号のいくつかの並べ替えによる変化を検出し、それがあったかに戻ってそれを設定することです。
所属していません StackOverflow