第一次学习写QT程序,为了解决中文显示乱码问题,折腾了不少时间,现将最终方案记录下。
先在main.cpp里
#include<QTextCodec>
QTextCodec*codec=QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
然后在相应的字符串处理地方,先将要显示的字符串赋值给char*
char szInfo[1024]={0};
sprintf(szInfo,"阳历:%04d-%02d-%02d\r\n-",2013,3,31);
然后将char*赋值给QString,此时如果直接用
QString qsInfo;
qsInfo=QString(szInfo);
ui->labInfo->setText(qsInfo);
那么界面显示出来是会乱码的,需改为
qsInfo=QString::fromUtf8(szInfo);
这样就可以显示正确的中文了。
而且这样在不同的windows系统下也能显示正确。