QT学习笔记(四):Qt5+MSVC编译 中文字符显示乱码问题解决

  • 问题:
    • 1、解决方法一:
    • 2、解决方法二:
    • 3、解决方法三:
    • 4、解决方法四:
  • 结果显示:

Qt5+MSVC编译 中文字符显示乱码。
现在为解决方法做个汇总:

问题:

main.cpp 代码如下:

#include<QApplication>
#include<QWidget>
#include<QLabel>int main (int argc , char* argv[])
{QApplication a(argc ,argv );QWidget widget;widget.resize(350,250);widget.setWindowTitle("面朝大海 by 海子");QLabel label(&widget);label.move(120,120);label.setText(QObject::tr("面朝大海,春暖花开"));widget.show();return a.exec();
}

显示:

1、解决方法一:

保证源程序源码文件是UTF-8,用以下预处理命令(及设置执行字符集,指示char的执行字符集是UTF-8编码)
源文件或头文件前面加上下面几行代码:

#ifdef WIN32
#pragma execution_character_set("utf-8")
#endif

PS: 要注意使用此预处理命令解决中文乱码问题,要求源码必须保存成带BOM的UTF-8格式:
及 QT Creator 中文本编码设置为 Add UTF-8 BOM on Save

2、解决方法二:

main.cpp 加上==#include <qtextcodec.h>==,并修改代码:

#include<QApplication>
#include<QWidget>
#include<QLabel>
#include <qtextcodec.h>int main (int argc , char* argv[])
{QApplication a(argc ,argv );QWidget widget;widget.resize(350,250);// 增加:QTextCodec *codec = QTextCodec::codecForName("GBK");     // 修改:widget.setWindowTitle(codec->toUnicode("面朝大海 by 海子")); QLabel label(&widget);label.move(120,120);// 修改:label.setText(codec->toUnicode("面朝大海,春暖花开"));      widget.show();return a.exec();
}

3、解决方法三:

通过 定义的静态函数QString::fromLocal8Bit,先转换成Unicode类型:

#include<QApplication>
#include<QWidget>
#include<QLabel>int main (int argc , char* argv[])
{QApplication a(argc ,argv );QWidget widget;widget.resize(350,250); // 修改:widget.setWindowTitle(QString::fromLocal8Bit("面朝大海 by 海子")); QLabel label(&widget);label.move(120,120);// 修改:label.setText(QString::fromLocal8Bit("面朝大海,春暖花开"));        widget.show();return a.exec();
}

4、解决方法四:

通过Qt5中处理支持中文常量的宏: QStringLiteral(它只能处理中文常量 ,const char* 不行):

#include<QApplication>
#include<QWidget>
#include<QLabel>int main (int argc , char* argv[])
{QApplication a(argc ,argv );QWidget widget;widget.resize(350,250); // 修改:widget.setWindowTitle(QStringLiteral("面朝大海 by 海子")); QLabel label(&widget);label.move(120,120);// 修改:label.setText(QStringLiteral("面朝大海,春暖花开"));        widget.show();return a.exec();
}

结果显示:

QT学习笔记(四):Qt5+MSVC编译 中文字符显示乱码问题解决相关推荐

  1. RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)

    RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) 参考文章: (1)RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) (2)https://www.cnblogs. ...

  2. linux红帽网页中文乱码解决,【linux学习笔记】安装redhat时中文显示乱码(小方框)解决方法...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ------------------------------------- 防抽------------------------------------- ...

  3. QT学习笔记(二):QT MinGW 和 MSVC 编译方式

    QT学习笔记(二):QT MinGW 和 MSVC 编译方式 Qt 中有两种方式编译:一种是MinGW ,另一种MSVC,是使用两种不同的编译器. 1.MSVC是指微软的VC编译器: 2.MingGW ...

  4. QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64)

    QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64) 1.编译方式介绍: 2.动态编译方式打包发布QT程序: 方法一:手动复制 方法二:使用工具 问题& ...

  5. QT学习笔记(六):Qt5主窗口框架示例

    QT学习笔记(五):Qt5主窗口框架代码示例 一.添加编辑菜单:并在下拉菜单和工具栏中添加"打开文件"动作菜单 #include <QToolButton> #incl ...

  6. QT学习笔记(一):VS2013 +QT 5.8 运行、编译问题解决

    QT学习笔记(一):VS2013 +QT 5.8 运行.编译问题解决 jom: E:\C++\4.QT\HelloWord\Makefile.Debug [debug\moc_predefs.h] E ...

  7. QT学习笔记(十四):QLayout的属性介绍

    QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...

  8. QT学习笔记(五):Qt5的8种标准对话框示例

    QT学习笔记(五):Qt5的8种标准对话框示例 前言 实例展示 1.颜色对话框 2.文件对话框 3.字体对话框 4.输入对话框 5.消息对框 6.进度对话框 7.错误信息对话框 8.向导对话框. 前言 ...

  9. Qt学习笔记之MySQL数据库

    一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...

最新文章

  1. HarmonyOS ToastDialog 的使用
  2. 数据结构与算法(2-1)线性表之顺序存储(顺序表)
  3. Anaconda:成功解决利用conda下载pytorch和torchvision时速度超慢的问题
  4. Java实现斐波那契数列Fibonacci
  5. VLC详细的使用说明以及配置说明综合示范实例精通VLC开发
  6. google摄像头查找办法
  7. (21)xilinx PCIE 开发方法(学无止境)
  8. windows dns配置文件在哪_搭建基于Windows的域服务与文件服务(一)——搭建Windows域服务...
  9. hnu 暑期实训之公交系统
  10. 实现简单的Console
  11. Autosar OSEK 网络管理学习笔记
  12. 计算机音频视频格式名,MP3/MP4播放器固件知识常见问题解决
  13. Imagenet数据集1000类别中英文
  14. 宝塔 云服务器 外网无法访问 解决办法
  15. windows查看tomcat版本信息
  16. React.createElement()的使用
  17. 数字图像处理01:imadjust函数的Pyhton实现
  18. 实验吧-密码学解题思路及答案(一)
  19. JavaEE 企业级分布式高级架构师(十五)FastDFS分布式文件服务器(1)
  20. [精通ROS机器人编程]在RViz中可视化机器人3D模型,GUI界面没有正常显示机械结构

热门文章

  1. MYSQL错误: ERROR 1205: Lock wait timeout exceeded(处理MYSQL锁等待)解决办法
  2. 啊啊忍不住了,更!新!!!
  3. 一篇文章搞懂架构师的核心技能
  4. Reactor三种线程模型与Netty线程模型
  5. 中文词语概念上下位图谱项目
  6. 【LeetCode】3月29日打卡-Day14-BFS
  7. 文献阅读6-Entity-Relation Extraction as Multi-turn Question Answering(实体关系联合抽取,层次标签依赖关系,multi-turn QA)
  8. Excel生成Sql语句 格式如:=字符串1A2字符串2C2字符串3
  9. redis和memcached相比的独特之处
  10. zabbix编译安装