Подтвердить что ты не робот

В чем разница между клавишей "горячие клавиши", "ярлык" и "ускоритель"?

  • В чем разница в них?

  • В Qt, если у меня есть горячая клавиша для QPushButton, я могу сделать ее с помощью "Alt +?", но если она для qaction, я могу нажать "?" только

4b9b3361

Ответ 1

В Windows ключ ускорителя является глобальным; например Alt + F4.

A клавиша быстрого доступа - это часть названия элемента меню или кнопки, где она может быть подчеркнута и доступна (без модификаторов), когда этот пункт меню или кнопка доступны.

От Microsoft:

A горячая клавиша - это комбинация клавиш, которую пользователь может нажать, чтобы быстро выполнить действие. Например, пользователь может создать горячую клавишу, которая активирует заданное окно и приносит его в начало z-порядка.

который, как представляется, указывает, что горячие клавиши являются глобальными системами.

Подводя итог:

  • клавиша быстрого вызова = нет модификаторов, локальных в меню или (для кнопки) в окне
  • клавиша ускорителя = обычно с модификатором, глобальное приложение
  • горячая клавиша = очевидно глобальная система

Я не знаю о конкретных значениях в Qt; для этого см. документацию Qt.

Ответ 2

Ответ Alf подходит для использования Windows. Ваши термины, которые вы упомянули (горячая клавиша/ярлык/ускоритель), не знакомы с чистой точки зрения Qt.

В Qt вы можете самостоятельно выбирать ключевые последовательности или использовать собственный метод упрощения Qt. В любом случае вы должны помнить, что сама Qt нацелена на многие платформы, на которых комбинация клавиш может быть или не иметь смысла. Классический Alt + F4 имеет смысл на клавиатуре, но на мобильном устройстве у вас нет модификатора Alt или F4. То, что вы действительно хотите, - это способ указания общего закрытия ярлыка приложения. Эта проблема умножается, потому что символ может быть доступен, но последовательность клавиш для его достижения может отличаться на других раскладках клавиатуры. Этот раздел документации является хорошим примером.

Qt обрабатывает это с помощью 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() делает то же, что и в предыдущем примере, и функция перевода используется таким же образом.

Метод setShortcut() просто использует букву "p", поэтому теперь должен работать с модификатором Alt или без него. Быстрый просмотр документации предполагает, что это будет работать с модификатором Shift или без него, поскольку буквы в последовательности клавиш, по-видимому, нечувствительны к регистру.

Кроме того, P будет плохим выбором, поскольку его часто считают командой печати. ​​

Заключительная заметка, если вы определяете краткие сокращения с жестким кодированием, убедитесь, что они работают на всех ваших целевых платформах!

Ответ 3

В Windows:

HotKey

Клавиша клавиатуры или комбинация клавиш, которые выполняют команду в заданном контексте.

Shortcut

Multi-key HotKey без ограничений навигации по меню и элементов gui.

AccessKey

Один ключ HotKey, который должен активировать видимый командный элемент управления  (требуется элемент gui), который озаглавлен/помечен соответствующей буквой горячих клавиш.

Клавиши ускорителя

Multi-key HotKey, которая должна активировать командный элемент (требуется элемент gui) независимо от его видимости.