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]
확실히 이렇게 하니 시그널들 서로 연결한다고 고생안해도 되서 개꿀
'Programming > qt' 카테고리의 다른 글
| QGraphicsProxyWidget (0) | 2026.06.05 |
|---|---|
| QT 자식 위젯으로 생성 / 부모 위젯 연결 (0) | 2026.06.05 |
| qt QTabWidget 사용 (0) | 2026.06.04 |
| qt 다국어지원 - 보이지 않는 메시지 추가하기 (0) | 2026.06.02 |
| QCombobox + 다국어 (0) | 2026.05.21 |
