Пост-примечания:
- Протестировано и подтверждено работа на linux / windows с использованием Qt-4.6.3-rh5-x86_64 и Qt-4.6.4-win32 соответственно.
- 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 заполняет меню файлов в виде таблицы с двумя столбцами.По умолчанию используется метка (имя) в левом столбце и отформатированные сочетания клавиш в правом столбце.
| 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 заполнить правую колонку с помощью ярлыка (то, что у меня было до того, как задать вопрос, довольно стандартно):
После ручного заполнения правого столбца, а также добавления мнемоники:
, которые для меня выглядят одинаково, за исключением подчеркивания, обозначающего мнемонику.