Programming/qt
QT 다국어 언어 설정 전파
구차니
2026. 6. 5. 14:57
QComboBox 등으로 언어를 선택하고 app.installTranslator()를 호출하면
모든 위젯들에게 자동으로 changeLanguage()가 발송된다 (즉, 수동으로 언어 변경 메시지를 전체에 뿌릴 필요가 없다)
| int main(int argc, char *argv[]) { QApplication app(argc, argv); QTranslator myappTranslator; if (myappTranslator.load(QLocale::system(), u"myapp"_s, u"_"_s, u":/i18n"_s)) app.installTranslator(&myappTranslator); return app.exec(); } |
위젯들에게 각각 아래의 이벤트 핸들러를 추가해주면 되는데
헤더에는 protected: 에 override 해서 해주면되고
| protected: void resizeEvent(QResizeEvent *event) override; void changeEvent(QEvent *event) override; |
함수에서는 별거 없이 retranslateUi()를 호출해주면된다.
| void MyWidget::changeEvent(QEvent *event) { if (event->type() == QEvent::LanguageChange) { ui.retranslateUi(this); } else QWidget::changeEvent(event); } |
[링크 : https://doc.qt.io/qt-6/ko/i18n-source-translation.html#prepare-for-dynamic-language-changes]
확실히 이렇게 하니 시그널들 서로 연결한다고 고생안해도 되서 개꿀