Programming/qt2026. 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]

 

확실히 이렇게 하니 시그널들 서로 연결한다고 고생안해도 되서 개꿀

'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
Posted by 구차니