###############################################################################
#操作系统:Win7废物版
#QT: 4.8.1
#操作系统:Winxp废物版
#QT: 4.8.1
#开发板:友善之臂Tiny6410 V1.2
#QT: 4.6.1
#QTE-arm: 4.7.0
#Write By Kinglate 20130806
###############################################################################
或许这个世界上没有人会像我相同遇到一个问题了,处理了,很高兴,一起也很悲伤!跨渠道编程适当苦逼,渠道是夸了,可是问题的处理方案并非夸渠道!适当头疼。其他的不想多说,挑个最典型的(处理正午乱码问题)跟我们共享一下,好让我们往后能少走弯路!
一、处理Windows下Qt4程序的中文乱码问题
1.办法一(该办法关于我的win7机器行不通,可是我的xp机器却没有问题,奇特吧?所以关于您的机器或许行不行。)
在main.cpp中找到int main(intargc,char*argv[])这个进口函数,在其里边参加以下四行代码:
2.在main.cpp中参加#include
QTextCodec::setCodecForTr(QTextCodec::codecForName(“GB2312”));
3.(至于加到什么方位,在{}内,只需不加在returna.exec();这行代码的后边就可以了!)完结后如下图所示:
4.需求运用中文的当地,仍是举个比如解说一下:
QMessageBox::information(this, tr(“衔接完结”), tr(“本地Ip为:”)+localIpStr+tr(“端口号为:”)+localport,QMessageBox::Ok);
测验成果:
5.办法二(适当好用一步到位)
在main.cpp中找到int main(intargc,char*argv[])这个进口函数,在其里边参加以下四行代码:
QTextCodec*codec=QTextCodec::codecForLocale();//设置文本为GB2312编码
QTextCodec::setCodecForTr(codec);//设置运用tr内的编码
QTextCodec::setCodecForLocale(codec);//设置本地编码
QTextCodec::setCodecForCStrings(codec);//设置字符串编码
(至于加到什么方位,在{}内,只需不加在returna.exec();这行代码的后边就可以了!)
完结后如下图所示:
需求运用中文的当地,仍是举个比如解说一下:
QMessageBox::information(this, tr(“衔接完结”), tr(“本地Ip为:”)+localIpStr+tr(“端口号为:”)+localport,QMessageBox::Ok);
测验成果:
二、处理Arm下Qt4程序的中文乱码问题
办法一:自己曾经常用的
1.在.cpp(非main.cpp)中参加#include
2.在每个需求用到中文的当地地点的函数体内设置中文字体编码,放在该函数体的榜首句即可:
QTextCodec::setCodecForTr(QTextCodec::codecForName(“utf8”));//设置中文字体编码
需求输入中文时要用tr(“我是中文!”)
3.仍是举个比如解说一下:
QMessageBox::warning(this, tr(“Waring”),tr(“输入用户ID或许暗码过错,请从头输入!”),QMessageBox::Yes);
测验成果:
办法二:(不一定行)
4.这个办法适当简略,在.cpp(非main.cpp)处,哪儿需求用到中文时trUtf8()函数即可,如:trUtf8(“我是中文!”)头文件都不需求加!
5.仍是举个比如解说一下:
QMessageBox::information(this, trUtf8(“翻开成功”), trUtf8(“现已成功翻开串口:”)+ui->portName_b->currentText(), QMessageBox::Ok);
测验成果:
三、处理Linux下Qt4程序的中文乱码问题
Linux下Qt4程序用得少,懒得搞,估量跟Windows下差不多,自己百度去吧!