本篇简单介绍中文显示乱码解决的几种方式。
一. 对于QT5.0以上的版本(含)
QString::fromLocal8Bit("中文");
二. 对于QT5.0以下的版本
上一种方式可以使用,也可以使用下面的方式:
在main.cpp修改为如下代码段
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版本。
- 在.pro工程文件,加入
TRANSLATIONS += linguist_CN.ts
- 点击QT Creator的菜单栏->Tools->Extenal->Linguist->Update Translations
更新翻译后,会在工程目录下,生成linguist_CN.ts文件。
- 点击你自己电脑开始菜单栏->所有程序,找到入下图的Linguist语言家工具
在语言家工具里,打开linguist_CN.ts文件,选择自己需要修改的译文,每改一处要点一次绿勾确认。
完成查看,绿勾勾上的,是你改过的翻译;点击保存按键;
再点击文件->发布,在工程目录下,会生成linguist_CN.qm文件,此文件就是翻译后的文件 - 回到QT Cretor工程,在main.cpp,加入如下代码
//新增
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盘有,不知道位置可以百度)。
四. Demo/相关包
另附QT语言家的Demo供大家参考(百度云盘):
链接: https://pan.baidu.com/s/1970CAdXQ7YepRA5UwaKh0Q 提取码: wrh4