如何修改Qt标准对话框的文字(例如,英文改成中文)
此篇文章参考qtcn论坛整理而成,因为文字和图片是本人亲自组织,所以仍算原创。
http://www.qtcn.org/bbs/read-htm-tid-30650.html
http://blog.csdn.net/yangxiao_0203/article/details/7488967
如图所示,QT自带的内建标准对话框QFontDialog、QColorDialog、QMessageBox。默认的文字全是英文的。QLineEdit和QTextEdit的右键菜单,默认的文字也全是英文的。
请问,如何可以把文字修改成中文或其他语言文字?

解决方案如下:
简体中文的解决思路是打开Qt安装目录下的translations,找到qt_zh_CN.qm和qt_zh_CN.ts。
直接用qt_zh_CN.qm即可,如果确实有翻译不完全的,打开qt_zh_CN.ts翻译一下重新生成.qm文件即可。
即:把translation/qt_zh_CN.qm加载到QTranslator中。
其他国语言方法类似。
参考源码:
#include "mainwindow.h"
#include <QApplication>
#include <QTranslator>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//加载Qt标准对话框的中文翻译文件
QTranslator tran;
bool ok = tran.load("qt_zh_CN.qm", "C:\\qt\\4.8.5_VS2010\\translations\\");//注,这里使用的是绝对路径,建议把.qm拷贝到工程目录下,然后使用相对路径.
a.installTranslator(&tran);
//加载用户自定义的界面翻译文件
QTranslator user;
ok = user.load("user_zh.qm", ":/");
a.installTranslator(&user);
//设置全局文字大小,非必需,根据自身情况使用
QFont font = a.font();
font.setPointSize(9);
a.setFont(font);
MainWindow w;
w.show();
return a.exec();
}
最终效果图:
如果软件想动态得切换语言,则需要定义一个全局函数供调用,举例如下:
#include "mainwindow.h"
#include <QApplication>
#include <QTranslator>
QTranslator g_tran;//必须设置成全局变量,如果是局部变量,设置将失效。
void setLanguage(int lan)//全局函数,可供其他文件调用
{
bool ok = false;
if (lan == 1)//中文
{
ok = g_tran.load("qt_zh_CN.qm", ":/lan/");//这里使用Qt资源文件,把.qm文件拷贝到项目路径/lan之下
}
else if (lan == 2)//英文
{
ok = g_tran.load("", ":/lan/");
}
QCoreApplication::installTranslator(&g_tran);
//或者写成qApp->installTranslator(&g_tran);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
setLanguage(1);//调用全局函数
MainWindow w;
w.show();
return a.exec();
}
http://blog.csdn.net/libaineu2004/article/details/19030129
如何修改Qt标准对话框的文字(例如,英文改成中文)的更多相关文章
- Qt标准对话框按钮文字等设置为中文
问题描述:QMessageBox.QColorDialog等标准对话框按钮显示都是英文 设置中文方法如下: 1)拷贝Qt安装目录下的qt_zh_CN.qm和qt_zh_CN.ts文件到工程目录中 2) ...
- qt中qlineedit和qtextedit右键菜单翻译成中文
没有linguist和lupdate等命令需要安装Linguist: 在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtco ...
- 【Qt开发】Qt标准对话框之QMessageBox
好久没有更新博客,主要是公司里面还在验收一些东西,所以没有及时更新.而且也在写一个基于Qt的画图程序,基本上类似于PS的东西,主要用到的是Qt Graphics View Framework.好了,现 ...
- Qt标准对话框之QColorDialog
Qt中提供了一些标准的对话框,用于实现一些常用的预定义功能,比如本节中将要介绍的颜色对话框——QColorDialog. 在不同的系统平台下,颜色对话框的显示效果可能会有所不同,主要因系统主题风格而异 ...
- qt 标准对话框
if (QMessageBox::Yes == QMessageBox::question(this, tr("Question"), ...
- 修改DevExpress中英文提示,将英文改为中文
1 : 修改DX 提示框中的英文字符 /// <summary> /// 重写DX弹出框 英文变为中文 /// </summary> public class CHS : De ...
- Qt中的标准对话框之QMessageBox
1. Qt标准对话框 Qt为开发者提供了一些可复用的对话框类型 Qt提供的可复用对话框全部继承自QDialog类 Qt中的对话框的使用方式和QDialog完全一致 2. 标准对话框的使用步骤 ①定义对 ...
- 如何将基于对话框的MFC工程改成基于BCG的
1.stdafx.h 加入如下内容.BCGCBProInc.h间接导入了lib. 2.应用程序类的父类由CWinApp改成CBCGPWinApp.构造函数增加如下代码: 3.对话框的父类有CDialo ...
- Qt 学习之路 2(15):标准对话框 QMessageBox
Qt 学习之路 2(15):标准对话框 QMessageBox 豆子 2012年9月18日 Qt 学习之路 2 40条评论 所谓标准对话框,是 Qt 内置的一系列对话框,用于简化开发.事实上, ...
随机推荐
- SQLServer Alter 修改表的列名的解决
解决:在SQLServer中修改表的列名,可以调用存储过程sp_rename. [sql]use Test;--使用数据库 sp_rename 'd_s_t.avg_grade','avg_g',' ...
- [LeetCode] 57. Insert Interval 解决思路
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
- guestmount
guestmountFor some types of changes, you may find it easier to mount the image's file system directl ...
- [原创]HTML5 web性能监控策略
web性能重要指标--时长 通常在监控前端页面性能的时候,我们会需要获取到很多的时间戳,比如用户按下回车的时候开始计时,但这个时候,我们统计的js代码并没有加载过来,也无法读取到相关的信息.在HTML ...
- activity theme parent 属性浅析
在AndroidManifest.xml文件中,可以对每一个Activity设置android:themetheme的设置 可以设置为系统自带的格式,也可以自定义格式. A: 系统自带格式 1.and ...
- java(17) - 增强for循环、装箱拆箱、可变参数
一.增强型for循环: 语法格式: 打印: A B C D E 当遍历集合或数组时,如果需要访问集合或数组的下标时,最好使用旧的方法来便利或循环,而不要用增强型for循环,因为它丢失了下标信息. 对于 ...
- 高性能WEB开发(11) - flush让页面分块,逐步呈现
高性能WEB开发(11) - flush让页面分块,逐步呈现 在处理比較耗时的请求的时候,我们总希望先让用户先看到部分内容,让用户知道系统正在进行处理,而不是无响应.一般大家在处理这样的情况,都使用a ...
- winrar3.7-winrar4.0的注冊码
首先新建记事本文件(txt文件),把下面红色代码复制进去,然后将文件另存为以 rarreg.key 为文件名称的文件(当然因为设置的不同,可能出现你保存后的文件为 rarreg.key.txt 没关系 ...
- TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]
TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...
- 自定义ViewGroup 流式布局
使用 public class MainActivity extends Activity { @Override protected void onCreate(Bundle sav ...