Qt 中文顯示

2021-06-16 04:35:12 字數 1265 閱讀 4445

qt預設的編碼(unicode)是不能顯示中文的,可能由於windows的預設編碼的問題,windows預設使用(gbk/gb2312/gb18030),所以需要來更改qt程式的編碼來解決中文顯示的問題。

qt中有專門的乙個類來處理編碼的問題(qtextcodec)。

可以以下的這些方法來設定編碼。

1. 設定qobject的成員函式tr()的編碼。

qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));

其中的codecforname函式是根據引數中的編碼名稱,在系統已經安裝的編碼方案中需找最佳的匹配編碼型別,該查詢是大小寫不敏感的。如果沒有找到,就返回0。

#include

#include

注意:技巧:

可以用codecforlocale函式來返回現在系統的預設編碼,這樣更容易做多編碼的程式而不用自己手動來更改具體的編碼。

2. 使用qstring的fromlocal8bit()函式

這個方法是最快的,系統直接自動將char *的引數轉換成為系統預設的編碼,然後返回乙個qstring。

int main(int argc,char *argv){

3. 用qtextcodec的tounicode方法來顯示中文

int main(int argc,char *argv){

ps:關於中文顯示亂碼的問題我糾結了好久,在網上查的一些方法似乎都不是太管用,所用我自己又實驗了很多次,終於解決了這個問題。我其他兩種方法我沒有試過,我只說第一種方法:

剛開始的時候我設定qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));或者將"gbk"換成"gb2312","gb18030"都沒有成功,依然是亂碼。不過也並不是一定不行,後來發現有些時候這樣設定也是可以的,我認為可能與源**的編碼方式有關。我後來又找到了一種解決辦法就是設定成qtextcodec::setcodecfortr(qtextcodec::codecforname("utf-8

"));或者設定成qtextcodec::setcodecfortr(qtextcodec::codecforlocale());我在ubuntu下,這兩種設定都可行;在windows下,qtextcodec::setcodecfortr(qtextcodec::codecforname("utf-8"));和qtextcodec::setcodecfortr(qtextcodec::codecforlocale());中應該有一種可以,希望我的這些研究能夠幫到你。

Qt顯示中文

以下說的只是自己的一些總結,不對了或不全面還望指正。qtextcodec setcodecfortr qtextcodec codecforname gb18030 qfont font times 10,qfont normal,false 就上面的3句話就ok了,而且是在qt4環境下 網上有個方...

Qt中文顯示

qt預設的編碼 unicode 是不能顯示中文的,可能由於windows的預設編碼的問題,windows預設使用 gbk gb2312 gb18030 所以需要來更改qt程式的編碼來解決中文顯示的問題。qt中有專門的乙個類來處理編碼的問題 qtextcodec 1.設定qobject的成員函式tr ...

QT顯示中文

qt顯示中文 1 如何定製字型檔 移植字型檔 需要將至少兩個檔案賦值到.lib font目錄下 1.fontdir 檔案。這個是應用程式尋找當前系統中最合適自己需要的字型檔的索引 2,需要的字型庫檔案,一般是多個。具體移植那乙個,看你使用的字型檔是什麼了,比如我現在的系統我就是移植的wenquany...