2012-02-16 5 views
7

私は、私のビューの一つで選択されたアイテムを削除するメニュー項目にQactionを持っています。QActionのショートカットはいつも動作しません

deleteAct = new QAction(tr("Delete Selected"), this); 
deleteAct->setShortcut(QKeySequence::Delete); 
connect(deleteAct, SIGNAL(triggered()), this, SLOT(deleteSelected())); 

IセットアップdelectActアクションをトリガーするキーボードショートカット(キーの削除):ここでは私がアクションを作成する方法です。それはほとんどの時間で動作しますが、いくつかの点では動作を停止します...誰でもショートカットが動作を停止する理由を知っていますか?

注:メニュー項目からトリガーすると、アクションは引き続き機能します。それがされるウィジェットなので

deleteAct->setShortcutContext(Qt::ApplicationShortcut); 

答えて

18

あなたは、ウィジェットにアクションを追加する必要があります...

+0

+1メインウィンドウのアクションにも追加するまで、自分のコンテキストメニューのショートカットが機能しませんでした。 – rendon

+0

さらに、action-> setShortcutContext(...);設定する必要があります、user362638答えを参照してください。 – Tob

+0

必ずしもそうではありません。デフォルトのショートカット・コンテキストはQt :: WindowShortcutです。これは元のポスターの例で必要なものです。ウィンドウBで削除を押すと、削除キーでウィンドウAの選択したアイテムを削除しないようにします。 Qt :: ApplicationShortcutは、アプリケーション全体のショートカット(つまり、アプリケーションの任意のウィンドウで動作するショートカット)に適しています。 –

6

は、例えば、アクションのshortcut contextを変更してみてくださいされません。そのただのショートカットキーイベントをリッスンします。 「これは」メインウィンドウであると仮定すると、 、単にあなたが複数のウィジェットに同じアクションを(つまり、分離アクションの概念の全体のポイントです)を追加することができます

addAction(deleteAct); 

注意ください。だから、それをメインウィンドウにメニューに追加しても問題ありません。

0

完全なコードは表示されませんが、どこかで有効/無効になると思われます。おそらく設定のために、ショートカットがコンストラクタでヒットしていて、他の場所では「無効」になっていないことを確認してください。

関連する問題