12.QT4.7.4-解决WIN平台和Linux平台中文乱码,QLineEdit右击菜单中文显示
1.解决Win平台中文显示
1.1首先解决win平台上中文显示乱码问题
1)首先查看qt creator的编码格式
通过->编辑->选择编码 查看.
2)如果qt creator的编码格式是utf8,并且项目里的汉字是utf8类型时
需要添加头文件:
#include <QTextCodec>
在main()函数加入:
QTextCodec *codec = QTextCodec::codecForName("utf8"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec);
3)如果qt creator的编码格式是GBK,并且项目里的汉字是GBK类型时
添加头文件:
#include <QTextCodec>
在main()函数加入:
QTextCodec *codec = QTextCodec::codecForName("GBK"); //GBK gbk QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec);
1.2 其次解决按钮、QLineEdit等编辑组件右击菜单等英文问题
如下图所示:
步骤:
1)搜索qt_zh_CN.ts ,找到位于: C:\Qt\4.7.4\translations\qt_zh_CN.ts
2)在开始程序里打开qt预言家(linguist.exe)
3)通过linguist.exe打开找到的qt_zh_CN.ts文件,进行翻译
如下图所示,发现都是大多翻译好了的:
上面表示该文件的tr("")字符串已被翻译完
接下来点击File->Release 生成翻译文件: qt_zh_CN.qm
4)再将qt_zh_CN.qm放到自己项目的资源文件里
5)在main函数里添加以下代码
//注意:必须要放在QApplication a(argc, argv);后面处,因为下面代码要初始化这个对象 QTranslator *trans = new QTranslator; trans->load(":/res/qm/qt_zh_CN.qm"); QCoreApplication::installTranslator(trans);
6)测试效果
2.解决Linux平台中文显示
2.1解决乱码,无法打印中文
有可能是qt配置界面的字体不支持中文
1)输入命令qtconfig
2)进入Qt配置界面,如下图所示,如果发现乱码,那就说明qt配置字体错了:
3)点击第2格,然后选择字体,只要能显示中文出来,便可以:
4.设置好后,退出并保存,然后运行自己写的记事本程序效果:
5)发现使用QPlainTextEdit编辑组件无法打出汉字
找到是输入法没有全局设置,输入命令ibus-setup,然后勾上全局设置:
PS:Linux下的中文输入法默认输入是UTF-8,所以需要保证qt creator编码格式也是UTF-8,否则输入中文会乱码
2.2其次解决按钮、QLineEdit等编辑组件右击菜单等英文问题
1)输入sudo find / -name qt_zh_CN*
从上图可以看到,qt已经为我们做好了qt_zh_CN.qm,然后将这个拷贝出来,加入到资源里
2)和Win平台一样,通过代码调用qt_zh_CN.qm
3)试验效果,发现按钮, QLineEdit右击菜单还是显示英文
4)使用qt预言家(linguist)从新发布试试
输入linguist,打开找到的qt_zh_CN.qm:
发现都是翻译好了的,那再次从新发布试试.
5)从新发布后,再次调用新发布的qt_zh_CN.qm,试验效果
发现ok了,如下图所示:
如果需要项目文件在Win/Linux上都要运行
设置Qt Creator:
进入编辑->选择编码 ,选择UTF-8类型
进入工具->选项->文本编辑器->行为,选择UTF-8编码
在代码里只需要调用:
char s[]="utf-8"; QTextCodec::setCodecForTr(QTextCodec::codecForName(s)); QTextCodec::setCodecForLocale(QTextCodec::codecForName(s)); QTextCodec::setCodecForCStrings(QTextCodec::codecForName(s));
就不再需要考虑,项目文件转编码问题了.
人间有真情,人间有真爱。