【Qt】Qt国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)【转】
简介
使用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】Qt国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)【转】的更多相关文章
- Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
来源:http://blog.sina.com.cn/s/blog_a6fb6cc90101art3.html 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候 ...
- Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
简介 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮.QLineEdit.QSpinBox.QScrollBar中的右键菜单等.通常情况下,我们软件都不会是纯英文的,那么如何 ...
- WinForm -- 为TextBox文本框添加鼠标右键菜单
WinForm -- 为TextBox文本框添加鼠标右键菜单 1. 新建一个WinForm项目,放置一个TextBox控件 2. 从工具箱拖进来一个ContextMenuStrip 3. 将TextB ...
- Qt之自定义QLineEdit右键菜单
一.QLineEdit说明 QLineEdit是单行文本框,不同于QTextEdit,他只能显示一行文本,通常可以用作用户名.密码和搜索框等.它还提供了一些列的信号和槽,方便我们使用,有兴趣的小伙伴可 ...
- Qt之QAbstractItemView右键菜单
一.功能概述 说起右键菜单,之前Qt之自定义QLineEdit右键菜单这篇文章中我已经讲述过3种右键菜单的实现方式,今儿也是在啰嗦一下,针对QListWidget类在定制一下右键菜单,我使用的具体方式 ...
- QT学习之窗口右键菜单
#QT学习之窗口右键菜单 QWidget 及其子类都有右键菜单,主要因为其有两个与右键菜单相关联的函数: Qt::ContextMenuPolicy contextMenuPlicy() const ...
- 12.QT4.7.4-解决WIN平台和Linux平台中文乱码,QLineEdit右击菜单中文显示
1.解决Win平台中文显示 1.1首先解决win平台上中文显示乱码问题 1)首先查看qt creator的编码格式 通过->编辑->选择编码 查看. 2)如果qt creator的编码格式 ...
- Qt Style Sheet实践(一):按钮及关联菜单
导读 正如web前端开发中CSS(Cascade Style Sheet)的作用一样,Qt开发中也可以使用修改版的QSS将逻辑业务和用户界面进行隔离.这样,美工设计人员和逻辑实现者可以各司其职而不受干 ...
- Qt Style Sheet实践(一):按钮及关联菜单(24K纯开源,一共四篇)
导读 正如web前端开发中CSS(Cascade Style Sheet)的作用一样,Qt开发中也可以使用修改版的QSS将逻辑业务和用户界面进行隔离.这样,美工设计人员和逻辑实现者可以各司其职而不受干 ...
随机推荐
- Java最重要的21个技术点和知识点之JAVA多线程、时间处理、数据格式
(四)Java最重要的21个技术点和知识点之JAVA多线程.时间处理.数据格式 写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能 ...
- C# 自定义重绘TextBox
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- Keywords Search
Keywords Search Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 翻译:WebApi 认证--用户认证Oauth解析
The Web API v2用户认证模板提供了流行的应用用户认证场景,如.使用本地帐号的用户名密码认账 (包括创建用户.设置和修改密码)以及使用第三方的认证方式,如facebook,googl ...
- 7. Android框架和工具之 android-percent-support-lib-sample(百分比支持)
1. android-percent-support-lib-sample介绍: 谷歌最新的百分比布局库的示例项目.其实LinearLayout的layout_weight也能实现百分比效果,不过这个 ...
- 【Android 界面效果37】ViewStub的应用
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局.那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在 ...
- android refbase类
在Android的源代码中,经常会看到形如:sp<xxx>.wp<xxx>这样的类型定义,这其实是Android中的智能 指针.智能指针是C++中的一个概念,通过基于引用计数的 ...
- ASCII码表 char(9),char(10),char(13)等
char(9) 水平制表符 char(10) 换行 char(13) 回车 测试ASCII码的方法: 在记事本中,按住ALT键,同时用小键盘输入十进制的ASCII码,然后松手,就可以看到效果了! ...
- Jquery 实现点击一个页面跳转后在另外一个页面显示指定位置
<script> $(function(){ var isTarget = '<?php echo $_GET['target']; ?>'; if (isTarget != ...
- hdu 4118 树形dp
思路:其实就是让每一条路有尽量多的人走. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<m ...