2016-06-01 6 views
1

私はMainWindowにQGraphicsViewを持っています。両方のマウスボタンを押したときに呼び出される私のキャンバス(つまりMainWindowのQGraphicsView)にカスタム "グラブ"機能があります。カスタムショートカットのコンテキストメニュー

私はCtrlキーを押しながら右クリックして右クリックでのみアクティブ化するのを防ぐときにコンテキストメニューを有効にします。 ActionsContextMenuポリシーを維持することが重要です。

これを行う方法はありますか?

+0

あなたがこれを行うにはキャンバスのマウスイベントのサブクラスを作成する必要がありのようですね。 –

答えて

1

KeyboardModifierを確認してください。必要な修飾子を指定できます。あなたの場合、それはControlModifierです。あなたはこれを使用したい場合は、あなたがQMenuを呼び出す必要があります

void yourClass::mousePressEvent(QMouseEvent *event) 
{ 
    if (event->button() == Qt::RightButton && 
     event->modifiers() == Qt::ControlModifier) 
    { 
     // call your context menu 
    } 
} 

:次に、方法mousePressEvent()をオーバーライドします。ちょうどあなたのクラスでこの機能を追加します。

void yourClass::showMenu() 
{ 
    QMenu contextMenu(this); 

    QAction action("My Action", this); 
    contextMenu.addAction(&action); 

    contextMenu.exec(); 
} 
+0

しかし、どうすればコンテキストメニューを呼び出せますか?私のために、それは自動です、私はちょうどそれにアクションを追加しました。 –

+0

あなたはそれが自動であることを意味しますか?メニューを使ってコードを表示する – IAmInPLS

+0

メニューのコードはありません。 PropertyEditorでContextMenuPolicyをActionsContextMenuに変更し、ActionEdiorにActionを追加しました。そして今私が右クリックすると私はコンテキストメニューを持っています。 –

関連する問題