在QT中,通過QMessageBox類或者其他顯示中文

【轉】Qt中漢字顯示的簡易方法【終結版】

有時我們可能需要直接使用代碼來創建用戶界面,但是這時候往往發現這樣出來的界面往往有漢字的地方都是亂碼。其實不僅僅是漢字,這樣子直接來寫出來的界面,不管用漢語也好,日語也好,朝鮮語也好,除了英文和拉丁文,最後肯定都是亂碼,因爲Qt默認解碼是採用ASCII方式解碼,遇到了你代碼中的文字,明明是漢字卻去查ASCII表,最後當然是亂碼啦。

但是我們注意到用Designer創建的窗體裏漢字顯示確實好好的,這是爲什麼呢?看一份ui文件轉換出的代碼就可以知道了:

        menu_2->setTitle(QApplication::translate("MainWindow", "\345\205\263\344\272\216 &A", 0, Qapplication::UnicodeUTF8));

也就是說這裏他們使用了一個轉換,而且這個轉換與QApplication 有關。那麼我們的代碼中可不可以使用類似的轉換呢?當然可以,而且我這裏有一個非常簡便的方法:

在工程的main.cpp文件中加入:

#include <QTextCodec>  …        QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); 

,這樣,這個語句後面所有的代碼,如window的實現中所有用tr()包圍起來的代碼最終都會以指定的UTF-8格式解讀。當然,Windows下支持GB2312、UTF-8格式,建議採用UTF-8格式,一來這個編碼格式越來越流行,二來Unix/Linux視窗系統下也默認支持UTF-8,將來如有移植必要無須修改編碼。不過發現有的Windows系統不能支持UTF-8,那也沒關係,只要改成GB2312就行啦。

tr()以一個ASCII碼字符串爲參數,返回一個QString。對於一些如從數據庫中提取出來的文本,就不僅僅要用這個東西了,還要考慮其原本的編碼,需要經過轉換之後,與最終的編碼相匹配方可正常轉換。

這裏附上加入代碼前和加入代碼後的兩張截圖


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章