1.解決Win平台中文顯示
1.1首先解決win平台上中文顯示亂碼問題
1)首先查看qt creator的編碼格式
通過->編輯->選擇編碼 查看.
2)如果qt creator的編碼格式是utf8,並且項目里的漢字是utf8類型時
需要添加頭文件:
#include <QTextCodec>
在main()函數加入:
QTextCodec *codec = QTextCodec::codecForName("utf8"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec);
3)如果qt creator的編碼格式是GBK,並且項目里的漢字是GBK類型時
添加頭文件:
#include <QTextCodec>
在main()函數加入:
QTextCodec *codec = QTextCodec::codecForName("GBK"); //GBK gbk QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec);
1.2 其次解決按鈕、QLineEdit等編輯組件右擊菜單等英文問題
如下圖所示:
步驟:
1)搜索qt_zh_CN.ts ,找到位於: C:\Qt\4.7.4\translations\qt_zh_CN.ts
2)在開始程序里打開qt預言家(linguist.exe)
3)通過linguist.exe打開找到的qt_zh_CN.ts文件,進行翻譯
如下圖所示,發現都是大多翻譯好了的:
上面表示該文件的tr("")字符串已被翻譯完
接下來點擊File->Release 生成翻譯文件: qt_zh_CN.qm
4)再將qt_zh_CN.qm放到自己項目的資源文件里
5)在main函數里添加以下代碼
//注意:必須要放在QApplication a(argc, argv);后面處,因為下面代碼要初始化這個對象 QTranslator *trans = new QTranslator; trans->load(":/res/qm/qt_zh_CN.qm"); QCoreApplication::installTranslator(trans);
6)測試效果
2.解決Linux平台中文顯示
2.1解決亂碼,無法打印中文
有可能是qt配置界面的字體不支持中文
1)輸入命令qtconfig
2)進入Qt配置界面,如下圖所示,如果發現亂碼,那就說明qt配置字體錯了:
3)點擊第2格,然后選擇字體,只要能顯示中文出來,便可以:
4.設置好后,退出並保存,然后運行自己寫的記事本程序效果:
5)發現使用QPlainTextEdit編輯組件無法打出漢字
找到是輸入法沒有全局設置,輸入命令ibus-setup,然后勾上全局設置:
PS:Linux下的中文輸入法默認輸入是UTF-8,所以需要保證qt creator編碼格式也是UTF-8,否則輸入中文會亂碼
2.2其次解決按鈕、QLineEdit等編輯組件右擊菜單等英文問題
1)輸入sudo find / -name qt_zh_CN*
從上圖可以看到,qt已經為我們做好了qt_zh_CN.qm,然后將這個拷貝出來,加入到資源里
2)和Win平台一樣,通過代碼調用qt_zh_CN.qm
3)試驗效果,發現按鈕, QLineEdit右擊菜單還是顯示英文
4)使用qt預言家(linguist)從新發布試試
輸入linguist,打開找到的qt_zh_CN.qm:
發現都是翻譯好了的,那再次從新發布試試.
5)從新發布后,再次調用新發布的qt_zh_CN.qm,試驗效果
發現ok了,如下圖所示:
如果需要項目文件在Win/Linux上都要運行
設置Qt Creator:
進入編輯->選擇編碼 ,選擇UTF-8類型
進入工具->選項->文本編輯器->行為,選擇UTF-8編碼
在代碼里只需要調用:
char s[]="utf-8"; QTextCodec::setCodecForTr(QTextCodec::codecForName(s)); QTextCodec::setCodecForLocale(QTextCodec::codecForName(s)); QTextCodec::setCodecForCStrings(QTextCodec::codecForName(s));
就不再需要考慮,項目文件轉編碼問題了.