qt无法翻译问题

来源:互联网 发布:巨人网络收购playtika 编辑:程序博客网 时间:2024/06/06 00:47
一般来说:
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"));
}


原创粉丝点击