Саммерфилд Марк
Шрифт:
Функция createMenus создает пункты меню, но не устанавливает их текст. И снова это будет сделано в функции retranslateUi.
В середине функции мы вызываем createLanguageMenu для заполнения меню Language списком поддерживаемых языков. Вскоре мы рассмотрим ее исходный код. Во-первых, давайте рассмотрим функцию retranslateUi:
Именно в функции retranslateUi выполняются все вызовы tr для класса MainWindow. Она вызывается в конце конструктора MainWindow и также при каждом изменении пользователем языка приложения при помощи меню Language.
Мы устанавливаем для каждого пункта меню QAction его текст, клавишу быстрого вызова команды и комментарий в строке состояния. Мы также задаем заголовок окну и каждому меню QMenu.
Рассмотренная ранее функция createMenus вызывала функцию createLanguageMenu для заполнения меню Language списком языков:
Вместо жесткого кодирования поддерживаемых приложением языков мы создаем один пункт меню для каждого файла .qm, расположенного в каталоге приложения translations. Для простоты мы предполагаем, что для английского языка также имеется файл .qm. Можно поступить по-другому и вызывать функцию clear для объектов QTranslator, когда пользователь выбирает английский язык.