Зрелый интерфейс на Qt: горячие клавиши
Содержание:
1.Код модуля (Вы читаете данный раздел);
2. Пояснения к коду.
Мы живем в счастливое время, когда разработчики Qt еще позволяют нам писать сложные программы, а не довольствоваться одной-двумя сенсорными кнопками. Программистов C++ еще не убедили пересесть с гоночного болида на трехколесный велосипед - я имею в виду, конечно же, javascript. Это разработчики KDE могут петь убаюкивающие песни, что QtQuick «хорошо для Plasma», но мне интересно, насколько это будет хорошо, допустим, для Scribus или Calligra - разделят ли их создатели такой оптимизм?..
Но вернусь к построению зрелого интерфейса. Он ориентирован на зрелых пользователей, а многие из них любят сами назначать «горячие клавиши» разным функциям. Одно время в GTK+ это было доступно по умолчанию, безо всякого труда со стороны программиста: пользователь подводил указатель мыши к пункту меню, нажимал сочетание клавиш, и оно закреплялось.
Но потом эту функцию отключили, и пришлось писать интерфейс для назначения сочетаний клавиш. В Qt тоже приходится писать, хотя не так уж много. Удобно вынести весь код в отдельный модуль, не связанный с основной программой, - тогда его можно будет переносить из проекта в проект без изменений.
Напишем модуль, который будет заниматься всем необходимым для поддержки «горячих клавиш». Какие стоят задачи? Во-первых, внутренний механизм назначения сочетания клавиш конкретному пункту меню.
Это значит, что мы должны иметь возможность найти экземпляр пункта меню по какому-то критерию, например по надписи на пункте меню. Получив экземпляр, мы можем назначить ему сочетание клавиш.
Вторая задача - сохранение назначенных сочетаний клавиш во внешний файл и возможность последующей загрузки этих данных.
Третья - механизм получения «нажатия» сочетания клавиш и отображение их в поле ввода, чтобы пользователь мог самостоятельно задать сочетание.
Приведу исходный код модуля, после чего опишу, что к чему, и продемонстрирую пример его использования.
Файл shortcuts.h:
Файл shortcuts.cpp:
1.
2. Пояснения к коду.
Мы живем в счастливое время, когда разработчики Qt еще позволяют нам писать сложные программы, а не довольствоваться одной-двумя сенсорными кнопками. Программистов C++ еще не убедили пересесть с гоночного болида на трехколесный велосипед - я имею в виду, конечно же, javascript. Это разработчики KDE могут петь убаюкивающие песни, что QtQuick «хорошо для Plasma», но мне интересно, насколько это будет хорошо, допустим, для Scribus или Calligra - разделят ли их создатели такой оптимизм?..
Но вернусь к построению зрелого интерфейса. Он ориентирован на зрелых пользователей, а многие из них любят сами назначать «горячие клавиши» разным функциям. Одно время в GTK+ это было доступно по умолчанию, безо всякого труда со стороны программиста: пользователь подводил указатель мыши к пункту меню, нажимал сочетание клавиш, и оно закреплялось.
Но потом эту функцию отключили, и пришлось писать интерфейс для назначения сочетаний клавиш. В Qt тоже приходится писать, хотя не так уж много. Удобно вынести весь код в отдельный модуль, не связанный с основной программой, - тогда его можно будет переносить из проекта в проект без изменений.
Код модуля
Напишем модуль, который будет заниматься всем необходимым для поддержки «горячих клавиш». Какие стоят задачи? Во-первых, внутренний механизм назначения сочетания клавиш конкретному пункту меню.
Это значит, что мы должны иметь возможность найти экземпляр пункта меню по какому-то критерию, например по надписи на пункте меню. Получив экземпляр, мы можем назначить ему сочетание клавиш.
Вторая задача - сохранение назначенных сочетаний клавиш во внешний файл и возможность последующей загрузки этих данных.
Третья - механизм получения «нажатия» сочетания клавиш и отображение их в поле ввода, чтобы пользователь мог самостоятельно задать сочетание.
Приведу исходный код модуля, после чего опишу, что к чему, и продемонстрирую пример его использования.
Файл shortcuts.h:
Файл shortcuts.cpp: