专栏首页Linux驱动12.QT4.7.4-解决WIN平台和Linux平台中文乱码,QLineEdit右击菜单中文显示

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了,如下图所示:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 40.QT-QPropertyAnimationdong和QParallelAnimationGroup动画实现

    该抽象类为QPropertyAnimation提供了动画播放,暂停,停止,持续时间,循环周期等抽象函数.

    张诺谦
  • LeetCode-4. 两个排序数组的中位数(详解)

    链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/description/ 有两...

    张诺谦
  • 50.Qt-QJsonDocument读写json

    张诺谦
  • WEB打印-根据需求打印局部源码记录

    这次的需求可能就比较简单了,就是实现web端的打印,但是是根据需求打印,而不是直接打印全部

    何处锦绣不灰堆
  • 支付漏洞实战

    支付漏洞的理解通常都是篡改价格。比如,一分钱买任何东西。少收款、企业收费产品被免费使用,直接造成企业的经济损失。

    Ms08067安全实验室
  • 探究!一个数据包在网络中的心路历程

    想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题。

    小林coding
  • conda update

    DESCRIPTION usage: conda update [-h] [-y] [--dry-run] [-f] [--file F...

    林清猫耳
  • 详解零知识证明的四大基础技术,如何与以太坊发生反应

    雷锋网按:原文标题为《zkSNARKs in a nutshell》,作者是以太坊智能合约语言Solidity的发明人Christian Reitwiessne...

    企鹅号小编
  • protobuf 转换python代码时发生 Expected "required", "optional", or "repeated".错误解决方法

            Google Protocol Buffers 简称 Protobuf,它提供了一种灵活、高效、自动序列化结构数据的机制,可以联想 XML,但是...

    sparkexpert
  • 开始使用-初尝胜果 顶

    本页介绍如何“测试驱动器”Flutter:从我们的模板创建一个新的Flutter应用程序,运行它,并学习如何使用Hot Reload进行更改。

    南郭先生

扫码关注云+社区

领取腾讯云代金券