本篇简单介绍中文显示乱码解决的几种方式。

一. 对于QT5.0以上的版本(含)

QString::fromLocal8Bit("中文");

二. 对于QT5.0以下的版本

上一种方式可以使用,也可以使用下面的方式:

在main.cpp修改为如下代码段

#include <QTextCodec>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

//解决中文乱码
//QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("system")); //若英文系统,则用GBK
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

CMainWindow w;
w.show();

return a.exec();
}

在引用时,前面加入tr:

tr("中文");

三. QT语言家

中大型项目,对于代码非常严苛的,可使用此种方法,避免在代码加入中文字串,用于Release版本。

  1. 在.pro工程文件,加入
TRANSLATIONS += linguist_CN.ts
  1. 点击QT Creator的菜单栏->Tools->Extenal->Linguist->Update Translations

更新翻译后,会在工程目录下,生成linguist_CN.ts文件。

  1. 点击你自己电脑开始菜单栏->所有程序,找到入下图的Linguist语言家工具
    QT中文显示乱码解决方式_菜单栏
    在语言家工具里,打开linguist_CN.ts文件,选择自己需要修改的译文,每改一处要点一次绿勾确认。
    QT中文显示乱码解决方式_菜单栏_02
    完成查看,绿勾勾上的,是你改过的翻译;点击保存按键;
    QT中文显示乱码解决方式_qt_03
    再点击文件->发布,在工程目录下,会生成linguist_CN.qm文件,此文件就是翻译后的文件
  2. 回到QT Cretor工程,在main.cpp,加入如下代码
#include <QTranslator> //新增


int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QTranslator translator; //新建翻译类
translator.load("linguist_CN"); //导入生成的文件
a.installTranslator(&translator); //装入

MainWindow w;
w.show();

return a.exec();
}

编译为Release版本后,把linguist_CN.qm放入Release同级目录下,添加相关运行库,即可运行(库在电脑C盘有,不知道位置可以百度)。
QT中文显示乱码解决方式_qt_04

四. Demo/相关包

另附QT语言家的Demo供大家参考(百度云盘):

链接: https://pan.baidu.com/s/1970CAdXQ7YepRA5UwaKh0Q 提取码: wrh4