Многоязычная поддержка пользовательского интерфейса Qt App: соответственно меняйте изображения - PullRequest
1 голос
/ 26 июня 2011

Я использую UI Designer для настройки макета формы.И я хочу поменять фоновое изображение кнопки на другое, когда в системной настройке телефона меняются настройки языка.Как я могу это сделать?Я знаю, как поддерживать многоязычность текста, но я не знаю, как поддерживать многоязычность изображения.Спасибо

1 Ответ

2 голосов
/ 26 июня 2011

При изменении языка будет вызываться QCoreApplication::installTranslator().Из документации:

Установка или удаление QTranslator, или изменение установленного QTranslator генерирует событие LanguageChange для экземпляра QCoreApplication.Экземпляр QApplication распространит событие во все окна верхнего уровня, где повторная реализация changeEvent может повторно преобразовать пользовательский интерфейс, передавая видимые пользователю строки через функцию tr () соответствующим установщикам свойств.Классы пользовательского интерфейса, сгенерированные Qt Designer, предоставляют функцию retranslateUi (), которую можно вызывать.

Так что вам следует переопределить QWidget :: changeEvent () в окне верхнего уровня и изменитьизображение там, если type() события LanguageChange.

...