QT5:RetranslateUi无法重新翻译视图

3

我正在尝试为一个应用程序添加动态本地化支持,但是在调用MainWindow上的retranslateUi()时,没有任何翻译。

我在首选项对话框中使用下面的代码来设置要使用的本地化:

if(translator.load(QDir::toNativeSeparators("localisation/") + m_localisations.at(ui->languageOptionsBox->currentIndex()).name() + "_v1"))
    qDebug() << "Loaded translation";
else
    qDebug() << "Translation not loaded";

qApp->installTranslator(&translator);

然后在我的 MainWindow 类中处理更改事件:

void MainWindow::changeEvent(QEvent *event)
{
   qDebug() << "Change event";
   if(event->type() == QEvent::LanguageChange)
   {
      qDebug() << "Language Change event";
      ui->retranslateUi(this);
   }

   QMainWindow::changeEvent(event);
}

retranslateUi()函数从ui_mainwindow.h中调用,但是UI没有使用正确的语言进行更新,根据调试语句,本地化确实被加载。翻译肯定有效,因为我将所选值存储为QSettings值,并在应用程序加载时进行检查,重新启动应用程序可以正确翻译,因此我认为我错过了某些东西。


1
希望这个链接对你有所帮助:这里 是关于同样主题的内容。 - p.i.g.
1个回答

0
我遇到了同样的问题。
事实证明,问题并不是来自于retranslateUi()方法,也不是来自于MainWindow::changeEvent()方法,而是来自于对QTranslator的处理方式:
你需要调用:
application->removeTranslator(previousTranslator);

之前:

application->installTranslator(translator);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接