追記:
- Qt-4.6.3-rh5-x86_64 と Qt-4.6.4-win32 をそれぞれ使用して、Linux / Windows での動作をテストおよび確認しました。
- Kamil Klimek が Mac OS X で動作しないことをテストし、報告しました。
これが Qt の意図した機能の一部なのか、それとも単なるハックなのか、完全にはわかりません。ドキュメントが見つからないということは後者をほのめかしていますが、それがとてもうまく機能していることは前者を示唆しています。あなたが裁判官になり、私/私たちに知らせてください.
通常の使用法は次のとおりです。
// Existing: QMenu* fileMenu_
QAction* action = new QAction("Recent file name", fileMenu_)
action->setShortcut(QKeySequence(QString("CTRL+").append(QString::number(1))));
fileMenu_->addAction(action);
どうやら、Qt はファイル メニューを 2 つの列を持つテーブルとして表示します。デフォルトの動作では、左側の列にラベル (名前) が表示され、右側の列に書式設定されたショートカット キーが表示されます。
| Recent file name Ctrl+1 |
これは、エスケープされたタブを使用して簡単にカスタマイズできます。そのような使用:
QAction* action = new QAction("Some text\tOther text", fileMenu_)
action->setShortcut(QKeySequence(QString("CTRL+").append(QString::number(1))));
結果は
| Some text Other text |
焦点が合っていないときは、デフォルトの Ctrl+1 ショートカットを引き続き保持します。これは解決策につながります:
QAction* action = new QAction(QString("Recent file name\tCtrl+&%1").arg(i)), fileMenu_)
action->setShortcut(QKeySequence(QString("CTRL+").append(QString::number(i))));
変数i
は、最近のファイルのインデックスを示します。これはまさに私が考えていたものを作成し、数字の下にアンダースコアも表示します。これはニーモニックのショートカットをうまく示しています。
アップデート
最終結果を示すために、混乱が生じた場合に備えていくつかの画像を追加しました。
Qtが右側の列にショートカットを入力できるようにします(質問する前に持っていたもので、かなり標準的です):

右側の列を手動で入力し、ニーモニックも追加した後:

ニーモニックを示す下線を除いて、私には同じように見えます。