2009-12-26 3 views
2

У меня есть значительное приложение Qt, которое находится в разработке с Qt 3 дня, и теперь оно содержит десятки окон с тысячами элементов меню, элементов управления и других инициируемых пользователем действий. В настоящее время он компилируется под Qt 4.6 для Linux, MacOS/X и Windows.Есть ли «простой» способ добавить настраиваемые сочетания клавиш в мое приложение Qt4?

Новый запрос функции от высокого заключается в том, что пользователь должен иметь возможность настраивать любые сочетания клавиш в этом приложении ... т. Е. Должен быть пункт меню «Настроить ключевые привязки ...», который при выборе , открывается диалоговое окно, в котором перечислены все действия в приложении и их текущая привязка клавиш (если есть), и позволяет пользователю назначать или изменять привязки клавиш для любых и всех действий, которые ему нужны, а затем сохранять его настройки и использовать приложений с его собственными настройками привязки клавиш.

Это похоже на довольно амбициозную вещь для реализации, учитывая количество клавиатурных действий в приложении, и мне интересно, существуют ли какие-либо существующие классы или библиотеки кода, доступные для помощи в подобных вещах, или если это то, что я собираюсь реализовать с нуля сам. Система интернационализации Qt, в частности, кажется, что она может быть адаптирована для помощи в чем-то подобном - разница заключается в том, что вместо того, чтобы (фактически в дополнение к) разработчик выбирал комбинации клавиш перед отправкой приложения, пользователи могли выбирать/изменять комбинации клавиш при использовании приложения (если они, конечно, недовольны отправленными значениями по умолчанию).

Есть ли у кого-нибудь намеки или указатели на код или подходы к реализации этой функции?

+0

Из того, что я понимаю, о материале перевода, это Wouldn» t хорошо работает для этой потребности. Другие аспекты интернационализации могут работать, но я бы предположил, что большинство людей просто внедряют интернационализацию ярлыков в переводы строк, связанных с ярлыками, используя интерпретацию «&» Qt. –

ответ

2

Я согласен с JimDaniel, похоже, что самым общим подходом было бы создание QAction для всего, что вы могли бы выполнить с помощью сочетания клавиш. Затем пользователь настраивает соответствующий ярлык для каждого действия.

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

0

Вы можете сохранить привязки в файле конфигурации приложения и прочитать его при запуске приложения. Затем всякий раз, когда пользователь меняет привязки, обновляйте этот файл. Ключи - это просто перечисления в структуре Qt. Вы можете переопределить соответствующий keyPressEvent() или keyReleaseEvent(), проверить нажатые клавиши и сопоставить их с текущими привязками.

+0

Правда - но это то, что я бы назвал «написанием с нуля». Поскольку это похоже на функцию, отличную от приложения, мне было интересно, есть ли какой-то уже доступный класс QKeyBindingsDialog или что-то в этом месте, которое я мог бы зайти. –

+1

Я полагаю, вы могли бы сделать его общим с помощью QActions с небольшим усилием, m знать о существующих виджетах для этой цели. Если вы сделаете его общим, вы должны разместить его где-нибудь, где другие могут его использовать :-) – JimDaniel