Есть ли "простой" способ добавить настраиваемые сочетания клавиш в мое приложение Qt4? - PullRequest
2 голосов
/ 26 декабря 2009

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 27 декабря 2009

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

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

0 голосов
/ 24 февраля 2011

Вот что я нашел до этой темы:

http://doc.qt.nokia.com/qq/qq14-actioneditor.html

Это в Qt3, но я думаю, что можно написать это в Qt4

0 голосов
/ 26 декабря 2009

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

...