| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Смена языка интерфейса |
| Автор: Lindemann66 7.10.2011, 15:40 | ||
| Ещё раз привет всем! Вопрос следующий Необходимо сменить язык интерфейса во время работы с программой без её перезапуска Слоты смены языка выглядят следующим образом:
Но, на интерфейсе это никаким образом не сказывается Вопрос - динамическая смена языка интерфейса возможна и выполняется так, как я написал, и ошибка где-то у меня, либо нужны какие-то дополнительные действия? буду благодарен за любые ответы! |
| Автор: Amp 7.10.2011, 16:56 |
| Пробежаться по всем виджетам и заново установить текстовые значения. uic для этих целей вроде бы генерировал метод retranslateUi(). Хлопотное дело в общем. |
| Автор: math64 7.10.2011, 17:42 |
| Не нужно самому бегать по виджетам. Нужно создать своё Application : public QApplication, в нём создать слот changeLanguage, кроме вышеприведённого кода, посылающий сигнал languageChanged. В каждом окне создать слот onLanguageChanged и соединить его с languageChanged приложения. Если окно создано с помощью дизайнера, в этом слоте достаточно вызвать ui->retranslateUi(this); |
| Автор: Amp 7.10.2011, 18:46 | ||
Я про случай, если нет. |
| Автор: math64 7.10.2011, 21:02 | ||||||
| В случае, когда виджет создаётся вручную, обычно создаются функции createActions() createMenu() createToolBar() createWidgets() смотрим: нужно перевести Actions -и меню и тулбар автоматически переведутся. Для каждого действия создаётся при создании такой код:
Заводим в Application метод
И пользуемся этим методов для создания или перевода действий в методе
Аналогично можно переделать createWidgets() |
| Автор: Lindemann66 8.10.2011, 14:47 |
| Спасибо всем больше за советы, в понедельник буду пробовать! |
| Автор: Lindemann66 10.10.2011, 14:50 | ||
| Вобщем, код основных процедур теперь выглядит следующим образом: Всё работает
Всем спасибо за ответы! |