Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
来源:互联网 发布:java 中声明short定义 编辑:程序博客网 时间:2024/05/17 02:20
简介
使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮、QLineEdit、QSpinBox、QScrollBar中的右键菜单等。通常情况下,我们软件都不会是纯英文的,那么如何处理这些问题呢?其实这也属于国际化的一部分。
下面,以中英文切换为例来为大家分享,其它语言切换类似。
- 简介
- 查找翻译文件
- 加载翻译文件
- 切换语言
查找翻译文件
- qt_zh_CN.qm
见名知义,这正是处理中文的翻译文件。
我们可以从Qt的安装目录中找到它,以我的目录为例:D:\Qt\Qt5.5.1\5.5\msvc2013\translations。
如果没有此文件,不用着急,我们可以查找此文件对应的翻译源qt_zh_CN.ts。然后使用lrelease,生成对应的qt_zh_CN.qm文件。
加载翻译文件
QTranslator translator; translator.load(":/qm/qt_zh_CN.qm"); qApp->installTranslator(&translator);
有点意思,这样很快的就处理为中文了。
切换语言
加载为中文之后,假设我们存在多语言切换问题,那么当我把语言切换为中文后,之前的qt_zh_CN.qm已经加载了,如何再切换回来呢?
好了,既然存在load,那么不出意外地话也会存在unload吧。不好意思,翻完所有的API我们并没有发现此接口!
继续分析,installTranslator是安装翻译文件的意思,那么我们可以想办法把它卸载掉,通过查找我们很容易发现removeTranslator接口。
官网对此接口的的解释为:
Removes the translation file translationFile from the list of translation files used by this application. (It does not delete the translation file from the file system.)
也就是说:从翻译文件列表中移除翻译文件后,并没有从文件系统中删除翻译文件。
那么,通过调用此接口,就可以移除翻译文件了。翻译文件一旦被移除,那么之前所加载的对应语言也就无效了。
if (language != MyApp::English){ m_systemTranslator.load(QString(":/qm/qt_zh_CN.qm")); qApp->installTranslator(&translator);}else{ qApp->removeTranslator(&translator);}
如上,切换语言的时候判断当前语言,如果为中文则加载qt_zh_CN.qm翻译文件,然后安装翻译器。否则,进行卸载!
这样,加载对应语言的时候,无论是自定义的文本,还是系统文本,我们都可以自由的切换了。
- Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
- 【Qt】Qt国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)【转】
- Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
- Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
- Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
- Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
- 自学Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
- Qt显示中文(包括QMessageBox、文本框右键菜单等)
- Qt之自定义菜单(右键菜单)
- Qt之自定义菜单(右键菜单)
- Qt之自定义菜单(右键菜单)
- qt中qlineedit和qtextedit右键菜单翻译成中文
- Qt之右键菜单
- Qt QMessageBox 按钮汉化
- Qt QMessageBox 按钮汉化
- Qt QMessageBox 按钮汉化
- Qt之自定义菜单(按钮菜单)
- Qt之自定义菜单(按钮菜单)
- Linux_NFS/Samba服务器
- poj1251
- Zynq高速串行CMOS接口设计与实现
- 在c++代码中执行bat文件
- freopen和fopen的在ACM竞赛中的简单使用
- Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
- [leetcode]Best Time to Buy and Sell Stock I&II
- web学习-瀑布流布局(2)
- Sublime Text2一些常用快捷键
- 【HDU1754】I HATE IT,线段树练习
- Add Two Numbers
- ios 全局变量的 定义使用
- 关于POI设置SHEET名称以及合并单元格,复制单元格方法
- Android之如果解决Android studio项目里面的类名不能重命名