900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > QT 中英文切换-国际化(解决部分翻译不起作用的问题)

QT 中英文切换-国际化(解决部分翻译不起作用的问题)

时间:2019-10-20 05:23:22

相关推荐

QT 中英文切换-国际化(解决部分翻译不起作用的问题)

中英文切换-国际化

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文件即可

4. 参考链接

/qq_41927737/article/details/106746595 —QT国际化发现的问题/dutchlight/article/details/108346832 —qt部分字符串无法翻译原因记录/uid-20676637-id-86140.html —QT学习笔记(二): QT国际化, 运行时改变界面语言, 利用QT实现国际化应用程序/li1123576747/article/details/109386897 —Qt国际化之tr()在自定义类中翻译无效的问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。