解決Windows下Arm下Linux下Qt4程序的中文亂碼問題
#操作系統(tǒng):Win7垃圾版
本文引用地址:http://2s4d.com/article/201611/317847.htm#QT: 4.8.1
#操作系統(tǒng):Winxp垃圾版
#QT: 4.8.1
#開發(fā)板:友善之臂Tiny6410 V1.2
#QT: 4.6.1
#QTE-arm: 4.7.0
#Write By Kinglate 20130806
###############################################################################
也許這個世界上沒有人會像我一樣遇到一個問題了,解決了,很開心,同時也很傷心!跨平臺編程相當(dāng)苦逼,平臺是夸了,但是問題的解決方案并非夸平臺!相當(dāng)頭疼。其他的不想多說,挑個最典型的(解決中午亂碼問題)跟大家分享一下,好讓大家今后能少走彎路!
一、解決Windows下Qt4程序的中文亂碼問題
1.方法一(該方法對于我的win7機器行不通,但是我的xp機器卻沒有問題,神奇吧?所以對于您的機器可能行不行。)
在main.cpp中找到int main(intargc,char*argv[])這個入口函數(shù),在其里面加入以下四行代碼:
2.在main.cpp中加入#include
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
3.(至于加到什么位置,在{}內(nèi),只要不加在returna.exec();這行代碼的后面就可以了?。┩瓿珊笕缦聢D所示:
4.需要使用中文的地方,還是舉個例子講解一下:
QMessageBox::information(this, tr("連接完成"), tr("本地Ip為:")+localIpStr+tr("端口號為:")+localport,QMessageBox::Ok);
測試結(jié)果:
5.方法二(相當(dāng)好用一步到位)
在main.cpp中找到int main(intargc,char*argv[])這個入口函數(shù),在其里面加入以下四行代碼:
QTextCodec*codec=QTextCodec::codecForLocale();//設(shè)置文本為GB2312編碼
QTextCodec::setCodecForTr(codec);//設(shè)置使用tr內(nèi)的編碼
QTextCodec::setCodecForLocale(codec);//設(shè)置本地編碼
QTextCodec::setCodecForCStrings(codec);//設(shè)置字符串編碼
(至于加到什么位置,在{}內(nèi),只要不加在returna.exec();這行代碼的后面就可以了!)
完成后如下圖所示:
需要使用中文的地方,還是舉個例子講解一下:
QMessageBox::information(this, tr("連接完成"), tr("本地Ip為:")+localIpStr+tr("端口號為:")+localport,QMessageBox::Ok);
測試結(jié)果:
二、解決Arm下Qt4程序的中文亂碼問題
方法一:本人以前常用的
1.在.cpp(非main.cpp)中加入#include
2.在每個需要用到中文的地方所在的函數(shù)體內(nèi)設(shè)置中文字體編碼,放在該函數(shù)體的第一句即可:
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));//設(shè)置中文字體編碼
需要輸入中文時要用tr("我是中文!")
3.還是舉個例子講解一下:
QMessageBox::warning(this, tr("Waring"),tr("輸入用戶ID或者密碼錯誤,請重新輸入!"),QMessageBox::Yes);
測試結(jié)果:
方法二:(不一定行)
4.這個方法相當(dāng)簡單,在.cpp(非main.cpp)處,哪兒需要用到中文時trUtf8()函數(shù)即可,如:trUtf8(“我是中文!”)頭文件都不需要加!
5.還是舉個例子講解一下:
QMessageBox::information(this, trUtf8("打開成功"), trUtf8("已經(jīng)成功打開串口:")+ui->portName_b->currentText(), QMessageBox::Ok);
測試結(jié)果:
三、解決Linux下Qt4程序的中文亂碼問題
Linux下Qt4程序用得少,懶得搞,估計跟Windows下差不多,自己百度去吧!
評論