2012-02-25 3 views
1

QGraphicsViewドキュメントによると、dragModeの動作は「アイテムによって処理されないマウスクリックにのみ影響します。次に、「QGraphicsViewのサブクラスを作成することでカスタムビヘイビアを定義できます」と表示されます。Qt:QGraphicsViewをクリックしてドラッグしてラバーバンドを選択する方法は、マウスクリックを受け入れる項目を選択しますか?

私のケースでは、マウスのクリックを受け入れるアイテムのクリックを普通のようにアイテムのマウスクリックを呼びたいと思います。そして、ゴムバンドのドラッグを始めるには、これらのアイテムにないクリックを(通常のように)したいと思います。しかし、私はビューをCtrlキーを押しながらクリックして、アイテムのマウスイベントメソッドを呼び出すのではなく、ラバーバンドドラッグの選択を開始することができます。

私はCtrlキーをマウスクリックイベントに関連付けられているかどうかを評価する方法を知っている:

if (event->modifiers().testFlag(Qt::ControlModifier)) 

しかし、私はこの状況をどうするかわからない、または場所を正確にそれを置くために。私はそれをQGraphicsItem、QGraphicsScene、またはQGraphicsViewに入れますか? QGraphicsViewは、ドキュメントが多少ヒントとして、最も可能性が高いと思われる。

答えて

2

あなたはこのようQGraphicsItemに条件を配置する必要があります。

if (event->modifiers().testFlag(Qt::ControlModifier)) 
{event->setAccepted(false); return;} 

今、あなたはあなたのQGraphicsViewでイベントを処理することができます。

+0

私はかなり前に尋ねて、実際の解決策に来ました。基本的にQGraphicsViewをサブクラス化し、CTRLを押したまま手動でラバーバンドを作成しました。それは非常にうまくいったが、これははるかにエレガントな解決策である。ありがとう! – Anthony

関連する問題