如何在 QMainWindow 中的所有 ui 上递归使用 retranslateUi()?
How to use retranslateUi() recursively on all ui in QMainWindow?
在我的 Qt5 应用程序中,我试图在 运行 时切换语言。
到目前为止我的简单功能:
QTranslator _translator;
void MainWindow::switchLanguage(QString lang)
{
if (!_translator.isEmpty()) qApp->removeTranslator(&_translator);
if (lang == "it")
{
_translator.load("Language_it_IT.qm", qApp->applicationDirPath());
qApp->installTranslator(&_translator);
}
ui->retranslateUi(this);
}
它工作正常,但仅适用于 MainWindow
。我在里面有一些形式 类 (带有他们的用户界面),我将其加载到 QStackedWidget
:
FormMonitor _formMonitor; // they all inherit from QWidget
FormSettings _formSettings; // and have their .ui file
FormProgram _formProgram;
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
// ...
ui->stackedWidget->addWidget(&_formMonitor);
ui->stackedWidget->addWidget(&_formSettings);
ui->stackedWidget->addWidget(&_formProgram);
// ...
}
void MainWindow::loadView(int index)
{
ui->stackedWidget->setCurrentIndex(index);
}
这些表格没有翻译。
如何翻译 MainWindow
中的所有“嵌套”表单?
像这样重新实现表单 类 的 changeEvent
:
void Form::changeEvent(QEvent *e)
{
if (e->type() == QEvent::LanguageChange)
ui->retranslateUi(this);
QWidget::changeEvent(e);
}
在我的 Qt5 应用程序中,我试图在 运行 时切换语言。 到目前为止我的简单功能:
QTranslator _translator;
void MainWindow::switchLanguage(QString lang)
{
if (!_translator.isEmpty()) qApp->removeTranslator(&_translator);
if (lang == "it")
{
_translator.load("Language_it_IT.qm", qApp->applicationDirPath());
qApp->installTranslator(&_translator);
}
ui->retranslateUi(this);
}
它工作正常,但仅适用于 MainWindow
。我在里面有一些形式 类 (带有他们的用户界面),我将其加载到 QStackedWidget
:
FormMonitor _formMonitor; // they all inherit from QWidget
FormSettings _formSettings; // and have their .ui file
FormProgram _formProgram;
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
// ...
ui->stackedWidget->addWidget(&_formMonitor);
ui->stackedWidget->addWidget(&_formSettings);
ui->stackedWidget->addWidget(&_formProgram);
// ...
}
void MainWindow::loadView(int index)
{
ui->stackedWidget->setCurrentIndex(index);
}
这些表格没有翻译。
如何翻译 MainWindow
中的所有“嵌套”表单?
像这样重新实现表单 类 的 changeEvent
:
void Form::changeEvent(QEvent *e)
{
if (e->type() == QEvent::LanguageChange)
ui->retranslateUi(this);
QWidget::changeEvent(e);
}