簡體   English   中英

熱鍵,快捷鍵和加速鍵之間有什么區別?

[英]What is difference between hotkey, shortcut and accelerator key?

  1. 他們有什么不同?

  2. 在Qt中,如果我有QPushButton的熱鍵,我可以通過“Alt +?”來制作它,但是如果它是qaction,我可以按“?” 只要

在Windows中, 加速鍵是應用程序全局的; 例如Alt + F4

快捷鍵是菜單項或按鈕名稱的一部分,可以在其中加下划線,並且當該菜單項或按鈕可直接使用時可用(不帶修飾符)。

來自微軟:

熱鍵是用戶可以按下以快速執行操作的組合鍵。 例如,用戶可以創建激活給定窗口並將其帶到z順序頂部的熱鍵。

這似乎表明熱鍵是系統全局的。

總結一下:

  • 快捷鍵=無修飾符,菜單中的本地或窗口中的(按鈕)
  • 加速鍵=通常使用修飾符,應用程序全局
  • 熱鍵=顯然系統全局

我不知道Qt中的具體含義; 為此,請參閱Qt文檔。

Alf的答案對於Windows適用性是正確的。 從純Qt的角度來看,你提到的術語(熱鍵/快捷鍵/加速器)聽起來並不熟悉。

在Qt中,您可以選擇自己處理關鍵序列,也可以使用Qt自己的簡化方法。 無論哪種方式,你必須記住Qt本身針對許多平台,其中一個組合鍵可能有意義也可能沒有意義。 經典的Alt + F4在鍵盤上很有意義,但在移動設備上你沒有Alt修飾符或F4鍵。 你真正想要的是一種指定泛型關閉應用程序快捷方式的方法。 此問題成倍增加,因為符號可用,但到達它的鍵序列可能在其他鍵盤布局上有所不同。 本部分文檔提供了一個很好的例子。

Qt使用class QKeySequence處理此class QKeySequence 非常聰明的Qt開發人員提供了一種定義常見用戶操作的簡單方法,這些操作將使用默認為目標平台的組合鍵。 它使用enum QKeySequence::StandardKey執行此操作,並在關閉應用程序示例時,您可以像這樣使用它:

QAction exitAction;
exitAction.setShortcut(QKeySequence(QKeySequence::Quit));

這些都在文檔中解釋。 還有另外兩個修飾符( shortcutContext()softKeyRole() )可以應用於QActions,它們以更高級的方式影響它們的應用。

您也可以使用以下內容自由分配自己的快捷方式:

QAction helpAction(tr("&?"));
helpAction.setShortcut(QKeySequence(tr("ALT+?")));

第一行應用(翻譯)文本“?” 在菜單或按鈕上顯示為其文本的操作。 請注意,問號符號可能不是所有語言中的正確符號,因此翻譯方法允許翻譯者在需要時指定更合適的符號。 &符號表示當菜單處於活動狀態時,緊跟在后面的字符將是快捷鍵。

第二行指定Alt +的(翻譯)快捷方式 在此示例中,如果需要, Shift修改器將由平台處理。 同樣, tr()方法允許翻譯者指定更合適的快捷方式(如果可用)。


回應teukkam的評論:

如果你的意思是你只是希望你的按鈕可以通過擊鍵觸發它是否由Alt修改,那么你可以做類似的事情:

QPushButton* yourButton; // assign this pointer yourself
yourButton->setText(tr("&Process"));
yourButton->setShortcut(tr("p"));

在此示例中, setText()中的&符號與前一示例相同,並且translate函數以相同方式使用。

setShortcut()方法只使用字母“p”,因此現在可以使用或不使用Alt修飾符。 快速瀏覽文檔表明,無論是否使用Shift修飾符,都可以使用,因為鍵序列中的字母顯然不區分大小寫。

此外,P將是一個糟糕的選擇,因為它通常被認為是打印命令。

最后要注意的是,如果您要定義硬編碼快捷方式,請確保它們適用於所有目標平台!

在Windows中:

熱鍵

鍵盤鍵或在給定上下文中執行命令的鍵組合

捷徑

多鍵HotKey ,沒有菜單導航限制,也不需要gui元素。

ACCESSKEY

單鍵HotKey哪個命令用於激活一個可見的命令控件 (需要gui元素),該控件被標題/標有相應的熱鍵字母下划線。

加速鍵

多鍵HotKey哪個命令用於激活命令控件 (需要gui元素),無論其可見性如何。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM