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));
就不再需要考虑,项目文件转编码问题了.
12.QT4.7.4-解决WIN平台和Linux平台中文乱码,QLineEdit右击菜单中文显示的更多相关文章
- 静态库和动态库的区别和win平台和linux平台代码实现
静态库和动态库的区别 什么是库 库是写好的,现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说,库是一种可 ...
- 【转】Redis安装整理(window平台和Linux平台)
原文连接:http://zheng12tian.iteye.com/blog/1471726 原文作者:zheng12tian 转载注明以上信息! window平台Redis安装 redis wind ...
- 由Windows开发平台向Linux平台转移的一些想法
从毕业到现在已经快20年了,一直在从事Windows平台上的开发工作.刚毕业那会大约是97,98年左右,工作的平台除了Windows平台还有Dos平台,因为在学校学习时,也是从Dos开始的.因此对于从 ...
- vim应用:终极解决windows系统gvim/vim的各种乱码(文件,菜单,提示信息)!
这个方法解决了我的windows下 gvim的中文乱码问题(跟大家分享一下). 此方法引用 http://www.douban.com/note/145491549/ 查看文件的编码::echo ...
- 采用Sambaserver由win平台,linux平台上传文件
1.构造yum [root@db /]# cd /etc/yum.repos.d/ [root@db yum.repos.d]# vi yum.repo --改动光盘挂载位置,enabled设置为启动 ...
- Caffe学习系列(12):训练和测试自己的图片--linux平台
Caffe学习系列(12):训练和测试自己的图片 学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测 ...
- 解决websphere在aix linux下日志乱码
管理控制台--->服务器--->应用程序服务器--->server1--->java和进程管理--->进程定义--->java虚拟机--->将通用jvm参数设 ...
- php如何分割字符串?php mb_substr分割字条串,解决中文乱码问题,支持分割中文! (转)
因为网站开发需要,必须有一项功能可以把字符串一个一个分割开来,并且转换为数组. 刚开始用“str_split函数”在实验分割中文字符时就出现了乱码. 蚂蚁学院经过一翻研究,最终发现以下方法可以有效分割 ...
- 将Blender3d软件语言改为中文设置(win各版本+Linux)
Blender作为开源软件,为全世界的媒体工作者和艺术家而设计,可以被用来进行 3D 可视化,同时也可以创作广播和电影级品质的视频,另外内置的实时 3D 游戏引擎,让制作独立回放的 3D 互动内容成为 ...
随机推荐
- IO在Socket中的应用
一.BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个连接 ...
- Android-finished with non-zero exit value 2
网上都是说,由于导入的依赖出现重复造成的,或者说 由于buildtools版本太高造成的,而我遇到的这个问题,这种两种方式无法去解决,所以才有了一下这种解决方式: 第一步,打开项目最外层的 build ...
- C#分部类型解析
等待着元宵节的到来,过完元宵,这个年也算是过完了,也得开始出去挣钱了,过年回家感觉每个人都觉得很牛,只有自己太渣,为了避免年底再出现这样尴尬的局面,还是需要努力干活.争取当上CEO,赢取白富美,走上人 ...
- iOS开发之ReactiveCocoa下的MVVM
最近工作比较忙,但还是出来更新博客了,今天给大家分享一些ReactiveCocoa以及MVVM的一些东西,干活还是比较足的.在之前发表过一篇博文,名字叫做<iOS开发之浅谈MVVM的架构设计与团 ...
- zookeeper集群配置详细教程
第一步:环境准备 环境 版本 说明 JDK 1.8 zookeeper运行所需 centos 7 操作系统 需要配置好JDK的环境变量 zookeeper-3.4.9.tar.gz 3.4.9 z ...
- Java 线程池(ThreadPoolExecutor)原理解析
在我们的开发中“池”的概念并不罕见,有数据库连接池.线程池.对象池.常量池等等.下面我们主要针对线程池来一步一步揭开线程池的面纱. 有关java线程技术文章还可以推荐阅读:<关于java多线程w ...
- Java中线程同步锁和互斥锁有啥区别?看完你还是一脸懵逼?
首先不要钻概念牛角尖,这样没意义. 也许java语法层面包装成了sycnchronized或者明确的XXXLock,但是底层都是一样的.无非就是哪种写起来方便而已. 锁就是锁而已,避免多个线程对同一个 ...
- Javascript高级编程学习笔记(19)—— 对象属性
面向对象的语言有一个标志,那就是语言中都有类的概念 前面的文章中我提到过ECMAScript中没有类的概念(ES6之前) 所以JS中的对象和其他语言中的对象存在着一些区别 ECMA中对对象的定义如下: ...
- Go语言复制文件
需要使用io包的Copy方法 package main import ( "fmt" "io" "os" ) //自己编写一个函数,接收两个 ...
- Cannot load php5apache2_4.dll into server
配置PHP开发环境的时候,当进行到在Apache的httpd.conf文件中配置加载PHP模块时发生如下错误 httpd: Syntax error on line 185 of D:/wamp/Ap ...