一般来说:
void MainWindow::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange) {
ui->retranslateUi(this);
} else
QWidget::changeEvent(event);
}
我们街道信号后,调用ui->retranslateUI(this); 就能实现ui的翻译,
但是像这种:
ui->comboBox->addItem(icon,tr("left"));
ui->comboBox->addItem(icon,tr("RIGHT EYE"));
在cpp文件中 添加的就翻译不出来,
解决办法是:
我们先来看看:
ui->retranslateUi(this);是怎么翻译的就知道了。
void retranslateUi(QMainWindow *MainWindow) { MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0)); pushButton->setText(QApplication::translate("MainWindow", "restart", 0)); pushButton_2->setText(QApplication::translate("MainWindow", "help", 0)); label->setText(QApplication::translate("MainWindow", "china", 0)); pushButton_3->setText(QApplication::translate("MainWindow", "PushButton", 0)); } // retranslateUi
这是ui翻译函数的处理方式,我们可以看出,他是重新设置了文本实现了翻译的,
所以如果我们需要翻译的话,也需要这样去写一个函数来设置所有其他控件的文本:
比如:
void MainWindow::retranslate()
{
ui->comboBox->clear();
QPixmap pixmap(1, ui->comboBox->height());
pixmap.fill(Qt::transparent);
QIcon icon(pixmap);
ui->comboBox->addItem(icon,tr("left"));
ui->comboBox->addItem(icon,tr("RIGHT EYE"));
}