解决QT->setText()中文出现乱码问题,使用QString或者tr()均出现乱码。

微软VC编译器源代码使用GB2312编码进行保存。源码中的汉字字符串在生成可执行文件的过程中被转换成了本地编码。

Qt内部是使用Unicode编码,即QString保存的是Unicode编码的字符串。

Qt内部需要使用Unicode编码的字符串才能正确处理。使用QString的函数默认QString内部是Unicode字符串。

由于二者不同,所以对于汉字来说,需要经过转换,否则出现乱码。

QString的成员函数知道按照何种编码来处理字符串。

fromLocal8Bit() 可以把中文转为Unicode

只需添加:

QString::fromLocal8Bit

lab1->setText("机智"); --> lab1->setText(QString::fromLocal8Bit("机智"));

解决QT->setText()中文出现乱码问题,使用QString或者tr()均出现乱码。