QTranslator | QT 实现多语言转换

     最近在做毕业设计,想着要添加什么功能好,于是乎想到可以提升用户体验的支持多语言,随手网上查了下发现QT真有这个功能,简单地学了下,做个记录。

参考链接,感谢这些前辈:
https://blog.csdn.net/qq_35451572/article/details/79498037

-_____________________________________________________________________--------------

1、在*.pro文件里面添加
TRANSLATIONS += English.ts
Chinese.ts
根据自己想要添加多少种语言和什么语言视情况添加。

2、
a、通过qt ui设计师添加的文字

首先记得选上这个按钮
QTranslator | QT 实现多语言转换_第1张图片
b、通过代码添加的文字,需要将需要转换的文字使用QObject::tr(“…”) 进行标记,否则程序中并不能对其进行识别。

3、生成ts 文件
QTranslator | QT 实现多语言转换_第2张图片

4、修改ts文件

经过第三步后,会在文件目录下生成*.ts文件,用qt的Linguist(Qt 语言家)打开修改。
QTranslator | QT 实现多语言转换_第3张图片
修改自己要转换的翻译文本

5、生成qm文件
QTranslator | QT 实现多语言转换_第4张图片

6、代码实现

生成完qm文件后
QTranslator | QT 实现多语言转换_第5张图片

7、多界面实现

因为我们做项目肯定不止一个界面,我们不可能每个界面都去重复这个步骤是吧,所以这里就用到了QEvent,里面有一个QEvent::LanguageChange,当改变语言时就会发送这个信号出来,我们用重写QEvent里面的void changeEvent(QEvent *e);来实现

virtual void changeEvent(QEvent *);

其他页面收到这个信号的时候就执行

this->ui->retranslateUi(this);

因为其他页面虽然收到了语言更改的信号,但是页面没有刷新,需要执行这个步骤使他刷新

PS.
博主本人一开始试的时候按照上面步骤6来然后执行7,运行后发现没有改变,后来把QTranslator m这个放到头文件里面,并为他new了,再来执行后面的就ok了,大家注意下。

大致上就是这样,更加详细的可参考上面的链接

你可能感兴趣的:(嵌入式软件工程师)