中英文切换-国际化
1.先看效果2.核心代码(重新赋值刷新翻译文本)2.0 pro文件配置2.1 构造函数2.2 两个按钮点击事件3.翻译文件的生成与配置4. 参考链接1.先看效果
2.核心代码(重新赋值刷新翻译文本)
2.0 pro文件配置
TRANSLATIONS = \qt_cn.ts \ # 中文qt_en.ts # 英文
2.1 构造函数
qtr = new QTranslator; // .h中的变量 这里初始化分配内存ui->comboBox->setEditable(true);// 不使能无法设置 且程序会异常结束ui->comboBox->lineEdit()->setAlignment(Qt::AlignCenter); // 居中ui->comboBox->lineEdit()->setReadOnly(true); // 只读 不可编辑ui->comboBox->addItem(tr("I am a comboBox")); // combobox文本ui->lineEdit->setText(tr("I am a lineEdit")); // lineEdit文本// 下拉框 第一行居中static_cast<QStandardItemModel*>(ui->comboBox->view()->model())->item(0,0)->setTextAlignment(Qt::AlignCenter);
2.2 两个按钮点击事件
void MainWindow::on_pushButton_clicked(){if(this->qtr->load(qApp->applicationDirPath()+"/qt_cn.qm")){qApp->installTranslator(qtr);ui->retranslateUi(this);qDebug()<< QStringLiteral("切换中文");// 加载完翻译文件后 这里需要重新赋值 刷新文本信息ui->lineEdit->setText(tr("I am a lineEdit"));ui->comboBox->removeItem(ui->comboBox->currentIndex());ui->comboBox->addItem(tr("I am a comboBox"));}}void MainWindow::on_pushButton_2_clicked(){if(this->qtr->load(qApp->applicationDirPath()+"/qt_en.qm")){qApp->installTranslator(qtr);ui->retranslateUi(this);qDebug()<< QStringLiteral("切换英文");// 加载完翻译文件后 这里需要重新赋值 刷新文本信息ui->lineEdit->setText(tr("I am a lineEdit"));ui->comboBox->removeItem(ui->comboBox->currentIndex());ui->comboBox->addItem(tr("I am a comboBox"));}}
3.翻译文件的生成与配置
写好代码后( tr(需要翻译的文本)-ui界面的文本默认可翻译 )点击工具栏 - 外部 - qt语言家 - 更新翻译 生成ts文件使用Linguist打开生成的ts文件,一行行翻译 or 直接修改ts文件亦可
使用Linguist:文件 - 发布或者Creator:工具栏 - 外部 - qt语言家 - 更新翻译 生成qm文件,程序中加载相应qm文件即可