Qt国际化翻译(中英切换)步骤:可子界面翻译

您所在的位置:网站首页 曼翻译成英文 Qt国际化翻译(中英切换)步骤:可子界面翻译

Qt国际化翻译(中英切换)步骤:可子界面翻译

2024-06-26 16:47:40| 来源: 网络整理| 查看: 265

效果显示:

1、英文翻译:

在这里插入图片描述 2、中文翻译: 在这里插入图片描述

步骤

1、用一个函数用来设置控件的文本信息,因为每次切换语言,就要重新设置控件的文本信息,所以我这里用了一个FunSetText()函数封装(FunSetText()在代码部分有显示,这里只是演示如何用tr("")包裹文本),并且文本信息用tr(“”);如QPushButton p要设置文本

p->setText(tr("Info")); //用tr("")设置,这是重点,不这样设置到时候翻译的时候识别不出来

2、pro文件中添加 ,添加如下语句。这条语句是为了生成两个.ts文件。

TRANSLATIONS = English.ts Chinese.ts

3、点击Qt工程中的更新翻译,如下图所示,更新翻译之后,在你的当前路径下会有两个.ts文件,如果没有生成可以是pro文件中没有添加TRANSLATIONS = English.ts Chinese.ts或者是在其他路径:在这里插入图片描述 生成两个.ts文件: 在这里插入图片描述 4、打开QT语言家(如果你的电脑没有装语言家则没有),找到自己编译相对应的语言家版本,以管理员的方式打开,这样更稳定。 在这里插入图片描述 5、英–中翻译:如果你要翻译的文本没有用tr("")这样是无法识别的。下图是打开语言家后的界面。 5.1、选择你刚刚生成的.ts文件进行翻译。这里先选择Chinese.ts(也可以一次性同时选择两个ts文件打开,这样我们的翻译的速度就快很多) 在这里插入图片描述 5.2、按照步骤设置翻译的内容(这里提及一下,相同的翻译内容设置一次就可以了,当你保存之后再次载入他就能识别) 在这里插入图片描述 5.3、当你设置完所有的翻译之后,发布生成qm文件-点击文件下的发布,发布之后会在.ts文件的路径下生成.qm文件 在这里插入图片描述 6、英-英翻译;其实相同的语言翻译就把翻译内容和要翻译的问题内容一致即可。因为英-中的步骤我已经写了,英-英的和中-中的翻译一样的步骤就可以,这里就不多加演示了。 在这里插入图片描述 7、最后我们就生成了两个.qm文件了 在这里插入图片描述

代码:

1、声明一个QTranslator类的变量

QTranslator mTranslator;

2、FunSetText用来给控件设置文本信息,因为每次翻译都需要更新控件文本的内容,所有用一个函数封装起来更方便。

void MainWindow::FunSetText() { //注意:ui更新要在前面,不然内容会被清空,具体的可以去ui的.h文件中看看retranslateUi() //更新ui中控件的文本信息 ui->retranslateUi(this); //更新代码中的文本信息 mpSystemMenu->setTitle(tr("System")); mpLanguage->setTitle(tr("Language")); mpSysEnableAction->setText(tr("System Enable")); mpSysCheckAction->setText(tr("System Check")); mpSysExitAction->setText(tr("Exit")); mpLanguageEnglish->setText(tr("English")); mpLanguageChinese->setText(tr("Chinese")); ui->pushButton->setText(tr("ChangeWidget")); }

3、语言改变事件

protected: void changeEvent(QEvent *event); void MainWindow::changeEvent(QEvent *event) { switch (event->type()) { case QEvent::LanguageChange: FunSetText(); break; default: QWidget::changeEvent(event); } }

4、点击了中英文翻译

//点击切换成英文 connect(mpLanguageEnglish, &QAction::triggered,this,[=]() { mTranslator.load(":/English.qm"); //下面这条语句会触发语言改变事件,调用FunSetText()函数 qApp->installTranslator(&mTranslator); //再加载完翻译文件之后更新文本信息 }); //点击切换成中文 connect(mpLanguageChinese, &QAction::triggered,this,[=]() { mTranslator.load(":/Chinese.qm"); qApp->installTranslator(&mTranslator); });

到此就ok了

注意事项:

1、每次新增或者删除了要翻译的内容,要翻译的时候记得过更新翻译; 2、翻译的本质是重新设置文本,所以向QMessageBox这个点击的时候生成的控件可以不需要提供更新接口,直接加tr()设置即可。

QMessageBox::warning(this,tr("Warning"),tr("Do you want Exit?"),tr("OK"),tr("Cancel"));

3、调用ui->retranslateUi(this)之后再调用FunSetText()重新设置文本,因为ui->retranslateUi(this)用给ui上拉的控件重新设置文本信息,可能会清空文本。 4、加载完翻译文本之后再调用FunSetText()重新设置文本。等翻译文件加载完之后再重新设置才能生效。 5、QT翻译失效问题 6、翻译的本质是,加载完翻译文本之后,当遇到这个用tr()包裹的内容,会和qm中的内容进行一个查找,如果查找到了这个内容,就按照设置的翻译内容翻译,如果没有就不翻译。

程序网盘

为了方便大家使用,我共享在网盘上了,有想要的可以去拿。 第一次完成这么长的一篇文章,喜欢的小伙伴给个支持吧。 提取码:wzds 网盘链接



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭