现象
在代码里使用打印输出中文,编译后,查看运行结果。在应用输出窗口看到中文输出的结果为乱码。
#include "mywidget.h"
#include <QApplication>//包含应用程序类的头文件
#include <QLocale>
#include <QTranslator>
#include<iostream>
using namespace std;
//main 程序入口 argc 命令行变量的数量 ar qv 命令行变量的数组
int main(int argc, char *argv[])
{
cout<<"我是中文"<<endl;
//a 应用程序对象,在 Qt 中,应用程序对象有且仅有一个
QApplication a(argc, argv);
QTranslator translator;
const QStringList uiLanguages = QLocale::system().uiLanguages();
for (const QString &locale : uiLanguages) {
const QString baseName = "FirstPrejet01_" + QLocale(locale).name();
if (translator.load(":/i18n/" + baseName)) {
a.installTranslator(&translator);
break;
}
}
//窗口对象 my widget 父类->Qwidget
myWidget w;
//窗口对象默认不会显示, 必须要调用 show 方法显示窗口
w.show();
//让应用程序对象进入消息循环,让代码阻塞在这行,不会一闪而过
return a.exec();
}
编译后输出结果:
原因
应用输出的编码默认是“system”,我们需要改为“UTF-8”.
解决方法
- 点击“编辑”,选择“preferences”,在“环境” -> “Interface” 里,将“Text codec for tools”选择为“UTF-8”,点击“OK”。
- 然后“Ctrl + R”重新编译即可。