在Qt5.14.0下原有Qt5.9.9下工程中文显示乱码问题以及发布问题处理总结

一、情况介绍

在Qt5.9.9下建立的工程,由MSVC2013编译没有任何问题,由于Qt软件某一些功能无法满足,所以将软件升级到Qt5.14.0,但是升级以后,出现了原来没有的问题,编译生产的界面里面中文显示都变成了乱码,请见下图。之后又发现Qt5.14.0在MinGW编译器下的.exe文件无法部署的问题,通过增装MSVC2015编译器解决。在Qt5.14.0下原有Qt5.9.9下工程中文显示乱码问题以及发布问题处理总结_第1张图片

在Qt5.14.0下原有Qt5.9.9下工程中文显示乱码问题以及发布问题处理总结_第2张图片

二、解决办法

我出现乱码的代码是这样写的:

 measureBtn=new QPushButton(QString::fromLocal8bit("测量"));

查找网上资料,按照https://blog.csdn.net/liubing8609/article/details/106727669,修改如下:

 measureBtn=new QPushButton(QString::fromLocal8bit("测量")。toLocal8bit());

编译后,发现有的中文显示正常了,有些仍然是乱码,特别是包含标点符号的单位符号的,此方法仍然不行。

后面将程序修改如下:

 measureBtn=new QPushButton(QStringLiteral("测量"));

修改后全部变为正常。

用MinGw编译后的exe程序用MinGw部署,产生“Unable to find the platform plugin”的错误,查找资料,需要解决的话,卸载此软件,重新安装Qt5.14.1或者安装Qt5.13的版本,说白了用MinGw部署,必须重新安装软件,哪能不能用MSVC2015或MSVC2017编译和部署呢,由于我安装了VS2013,原来Qt5.9.9就一直使用MSVC2013编译和部署的,现在MSVC2015编译程序qglobal.h就报错误,查看MSVC2015配置如下:

在Qt5.14.0下原有Qt5.9.9下工程中文显示乱码问题以及发布问题处理总结_第3张图片

现在需要安装VS2015的运行时组件和生成工具2015即可,不再重新安装VS2015参考文章:https://www.cnblogs.com/sggggr/p/12791740.html。安装后对MSVC2015的配置如下:

在Qt5.14.0下原有Qt5.9.9下工程中文显示乱码问题以及发布问题处理总结_第4张图片

至此,通过MSVC2015将程序编译后,在对.exe文件部署,都能正常实现。

三、小结

QSringLiteral(str)
这个指令在编译的时候生成一个在String单字以外的QString的数据,即Qt5中从字符串常量初始化一个QString对象,在这个类中,创建一个QString在空闲的时候同时生成string数据存在编译对象中的只读区域。使用QStringLiteral来代替C++中的双重数值传递将会在编译的时候显著的提升时间;

qt fromLocal8Bit()函数可以设置编码。
QT默认的编码(unicode)是不能显示中文的,windows默认使用(GBK/GB2312/GB18030),所以需要来更改QT程序的编码来解决中文显示的问题。

你可能感兴趣的:(c++,qt5)