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 互动内容成为 ...
随机推荐
- Openvswtich 学习笔记
场景: 创建一个Virtual Switch,支持VLAN,支持MAC-Learning 包含下面四个Port: P1, truck port P2, VLAN 20 P3, P4 VLAN 30 包 ...
- C#常用工具类——Excel操作类(ZT)
本文转载于: http://www.cnblogs.com/zfanlong1314/p/3916047.html /// 常用工具类——Excel操作类 /// <para> ----- ...
- html input file accept 上传文件类型限制格式 MIME 类型列表
例: <input type="file" accept="application/vnd.openxmlformats-officedocument.spread ...
- redis主从架构,分片集群详解
写在前面:这篇笔记有点长,如果你认真看完,收获会不少,如果你只是忘记了相关命令,请翻到末尾. redis的简单介绍: 一个提供多种数据类类型储存,整个系统都在内存中运行的, 定期通过异步的方式把数据刷 ...
- 初探系列 — Pharbers用于单点登录的权限架构
一. 前言 就职公司 法伯科技是一家以数据科技为驱动, 专注于医药健康领域的循证咨询公司. 以数据科学家身份, 赋能医药行业. 让每位客户都能享受数据带来的价值, 洞察业务, 不止于数据, 让决策更精 ...
- FloatingWindow 悬浮窗开源项目总结
在Android开发中,我们不免会遇到悬浮窗展示的需求,以下是本人之前star的悬浮窗的开源项目,供大家参考: 一.FloatingWindowDemo 开源项目地址:https://github.c ...
- python高级-模块(14)
一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include <math.h>引入math.h这个头文件,否则是无法正常进行调用的. ...
- [P4721] 分治 FFT
「题意」给定\(g[0]=1\),\(g[1~n-1]\)求序列\(f[i]=\sum_{j=1}^i f[i-j]*g[j]\ , i\in[1,n-1],f[0]=1\). 「分析」分治处理区间[ ...
- Java核心技术及面试指南 异常部分的面试题归纳以及答案
4.2.4.1 throw和throws有什么差别?异常(Exception)和错误(Error)有什么差别? throw语句表示抛出异常,由方法体内的语句处理.throws语句用在方法声明后面,表示 ...
- mysql 开发进阶篇系列 1 SQL优化(show status命令)
一.概述 随着上线后,数据越来越多,很多sql语句开始显露出性能问题,本章介绍在mysql中优化sql语句的方法. 1. 通过show status 命令了解各种sql的执行频率 通过show [ ...