qt預設的編碼(unicode)是不能顯示中文的,可能由於windows的預設編碼的問題,windows預設使用(gbk/gb2312/gb18030),所以需要來更改qt程式的編碼來解決中文顯示的問題。
qt中有專門的乙個類來處理編碼的問題(qtextcodec)。
可以以下的這些方法來設定編碼。
1. 設定qobject的成員函式tr()的編碼。
qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));
其中的codecforname函式是根據引數中的編碼名稱,在系統已經安裝的編碼方案中需找最佳的匹配編碼型別,該查詢是大小寫不敏感的。如果沒有找到,就返回0。
具體的轉換**看下面:
#include
#include
#include
int main(int argc,char *ar**)
qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));
qlabel hello(qobject::tr("你好世界"));
hello.setwindowtitle(qobject::tr("qt中文顯示"));
hello.show();
注意:技巧:
可以用codecforlocale函式來返回現在系統的預設編碼,這樣更容易做多編碼的程式而不用自己手動來更改具體的編碼。
2. 使用qstring的fromlocal8bit()函式
這個方法是最快的,系統直接自動將char *的引數轉換成為系統預設的編碼,然後返回乙個qstring。
#include
#include
#include
int main(int argc,char *ar**)
qstring str;
str = str.fromlocal8bit("qt中文顯示");
hello.setwindowtitle(str);
hello.show();
3. 用qtextcodec的tounicode方法來顯示中文
#include
#include
#include
int main(int argc,char *ar**)
qlabel hello(qobject::tr("你好世界").tolocal8bit());
qtextcodec *codec = qtextcodec::codecforlocale();
qstring a = codec->tounicode("qt中文顯示");
hello.setwindowtitle(a);
hello.show();
如何在 Eclipse 中顯示行號
方法1,window prefences general editors text editors show line numbers 方法2,這個問題,困擾了我好長時間,今天終於找到了。其實很簡單,經過以下幾步,就一切搞定了 1 先開啟乙個類,如下圖 2 然後開啟檢視,如何開啟呢?最能解決問題的也...
python顯示漢字 python如何顯示中文字型
python如何顯示中文字型?在這裡,你可以選擇2種不同的解決方法 方法一 定義宣告好編碼格式 首先你要做的,是在開啟寫入檔案時,宣告encoding編碼put in open becopyed file,w encoding utf 8 之後,在寫入檔案的時候設定好編碼方式,先用encode編碼,...
qt漢字顯示的問題 qt中不顯示標題欄的方法
qt中要顯示漢字,需要對編碼及字型進行設定。1,如果是在pc機上執行,則需要設定編碼,如下 qtextcodec setcodecfortr qtextcodec codecforname utf 8 qtextcodec setcodecforlocale qtextcodec codecforn...