2012-02-16 30 views
7

我有一個菜單項的Qaction用於刪除我的一個視圖中的選定項目。這裏是我如何創建的動作:我設置了一個鍵盤快捷鍵(刪除鍵),它應該觸發delectAct動作。它大部分時間都在工作,但在某些時候停止工作......有人知道爲什麼捷徑會停止工作嗎?QAction快捷方式並不總是工作

注意:如果從菜單項中觸發它,動作仍然有效。它只是不快捷...

回答

18

您需要的操作添加到窗口小部件,因爲它是將小部件傾聽關鍵事件。 假設「本」是一個主窗口,簡單地做

addAction(deleteAct); 

請注意,您可以加入同一個動作的多個小部件(這是分離的動作概念的整點)。因此將它添加到主窗口可以將其添加到菜單中。

+0

+1我的上下文菜單快捷方式沒有工作,因爲我想要的,直到我已經添加到主窗口的行動。 – rendon 2012-08-18 02:34:22

+0

另外,action-> setShortcutContext(...);必須設置,請參閱user362638答案。 – Tob 2016-05-05 13:17:51

+0

不一定;默認的快捷方式是Qt :: WindowShortcut,這就是你想要的原始海報例子。當您按下窗口B中的刪除鍵時,您不希望Delete鍵刪除窗口A中的選定項目。 Qt :: ApplicationShortcut對於應用程序範圍內的快捷方式(即應該可以在應用程序的任何窗口中工作的快捷方式)有意義。 – 2016-05-07 08:53:36

6

嘗試改變的動作shortcut context,例如:

deleteAct->setShortcutContext(Qt::ApplicationShortcut); 
0

沒有看到完整的代碼,我會冒險猜測某處它被啓用/禁用。確保快捷方式在構造函數中被擊中,並且由於可能的設置而不會在其他地方「禁用」。