如何在QMenu中为QActions指定助记符(&符号)?

swa*_*log 5 c++ user-interface qt qt4 mnemonics

我在QMenu中使用QActions,这是典型的

| &New file     Ctrl+N |
| &Open file    Ctrl+O |
Run Code Online (Sandbox Code Playgroud)

当菜单打开时,它可以获得简单的N(对于新文件)和O(对于打开文件)的上下文快捷方式.

我想做一些类似的事情来列出最近的文件,即:

| [A recent file]          Ctrl+1  |
| [Another recent file]    Ctrl+2  |
 ... etc
Run Code Online (Sandbox Code Playgroud)

将助记符/上下文快捷方式设置为相应的1和2,不必在文本字段中包含此数字,这将是很好的:

| &1. [A recent file]          Ctrl+1  |
| &2. [Another recent file]    Ctrl+2  |
Run Code Online (Sandbox Code Playgroud)

如果有人知道如何做到这一点,或者可以指出我找到方向,我会很高兴.我查看了一些文档,我找不到很多提及使用&符号以及为QActions设置助记符快捷方式的等效方法.

谢谢.

Ps:Qt-4.7.4-rh6-x86_64,C++

Luc*_*lle 4

您可以创建仅在菜单上下文中有效的快捷方式:

QAction * recentFileAction = new QAction( tr("A recent file"), this );
recentFileAction->setShortcut( QKeySequence( tr("Ctrl+1") ) );

QMenu * tools = menuBar()->addMenu( tr("&Tools") );

// Add a shortcut valid only when the tools menu has focus
QShortcut * recentFileShortcut = new QShortcut( QKeySequence( tr("1") ), tools );
recentFileShortcut->setContext( Qt::WidgetShortcut );

connect( recentFileShortcut, SIGNAL(activated()),
         recentFileAction,   SLOT(trigger()));
Run Code Online (Sandbox Code Playgroud)

您可能需要设置菜单的焦点策略,Qt::StrongFocus以便它接受键盘输入。