qt如何在label中顯示漢字 Qt中文顯示

2021-10-17 06:43:36 字數 1370 閱讀 9043

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...