Qt App的动态变更翻译

Dynamic Change translation of Qt App

本文关键字:翻译 动态 App Qt      更新时间:2023-10-16

在我的应用程序中,我有几个QDialog表单。
当我安装和更改我的应用程序的翻译时,主窗口受到影响,但所有其他对话框都没有更改为新语言。所以,
如何在运行时(动态)更改所有表单语言?
请帮帮我

    void MainWindow::SetUILang()
    {
        QTranslator qtTranslator;
        qtTranslator.load(QString("tr_fa"), "./Lang");
        qApp->installTranslator(&qtTranslator);
        ui->retranslateUi(this);
    }

如果动态更改应用程序上的语言,则会发出QEvent::LanguageChange类型的changeEvent。你必须抓住这一点,并重置你的文本无处不在(使用tr函数)>

void myclass::changeEvent(QEvent *event) {
    if (event->type() == QEvent::LanguageChange) {
        // Set all texts
    }
    else {
        QWidget::changeEvent(event);
    }
}