QT顯示中文

2021-06-16 07:35:47 字數 1834 閱讀 6762

qt顯示中文

1 如何定製字型檔(移植字型檔)

需要將至少兩個檔案賦值到....lib/font目錄下

1. fontdir 檔案。這個是應用程式尋找當前系統中最合適自己需要的字型檔的索引;

2,需要的字型庫檔案,一般是多個。具體移植那乙個,看你使用的字型檔是什麼了,。比如我現在的系統我就是移植的wenquanyi_12pt.bdf就可以了,當然這個比較大。你也可以用小點的。我的flash比較大呵呵,懶得折騰。

在程式中需要這樣設定:

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

qtextcodec::setcodecforcstrings(qtextcodec::codecforname("utf8"));

設定使用utf-8編碼也就是unicode編碼了,這樣在tr和string的都是unicode的編碼了,根據字型檔的索引就能對應相應的字元了。

然後設定字型:

//字型設定

qfont font("wenquanyi",12,qfont::bold); //使用wenquanyi字型

this->setfont(font);

//這樣就設定了字型了,中文一般使用wenquanyi字型就可以了。很好的。

基礎知識介紹:

2 如何從ttf字型檔案轉成qpf字型檔案

2.1 把ttf轉換成bdf

儘管不推薦使用ttf格式的字型檔,但由於ttf格式的字型檔可以轉換成任意大小的bdf字型檔,而可以找到的bdf字型檔都是固定大小的,因此在實際製作qpf字型檔案時,還是需要ttf格式的字型檔。把ttf轉換成bdf的方法如下:

./ttf2bdf source.ttf -p yoursize -o destination.bdf

即利用軟體ttf2bdf可以把原始檔source.ttf轉換成大小為yoursize的bdf格式的檔案destination.bdf。那在程式內部是如何實現將ttf轉成bdf的呢?由2.2.1和2.2.2的介紹,並且查閱參考文獻[3],可以知道ttf的內部儲存結構。其中最核心的部分是 ttf檔案格式中的12個位元組的檔案表:表目錄按tag以公升序排列。

type

name

description

ulong

tag4位元組的標識

ulong

checksum

表中的checksum

ulong

offset

truetype font檔案的起始偏移量offset

ulong

length表長

還有乙個有關offset表的資訊,包括版本號,表的數量,查詢範圍。入口選擇,轉換範圍。

通過操作檔案表,將描述表中的資料取出來,按照bdf字型所定義的格式寫入,就可以生成對應的字型。比如,可以給出一小段c語言程式,此程式用於計算當前checksum的位置。

ulong

calctablechecksum(ulong *table,ulong length)

{ulong sum = 0l;

ulong *endptr=table+((length+3)& ~3)/sizeof(ulong);

while(table3 總結

經過本人對字型檔進行上述處理後,就可以在嵌入式開發板上顯示各種字型,只要找到給定ttf或bdf的字型檔,如果找不到bdf字型檔,可以找到字型檔,然後通過 ttf2bdf這個程式來得到bdf字型檔。這樣在開發板上可以顯示行書,楷書等字型,並且字型顯示也很正常,不會出現大小不一致的問題。但是,本人認為,由於這是嵌入式開發,儲存資源非常有限,如果能進一步將字型檔縮小,只留下程式中所要用的漢字組成的字型檔就好了,這是需要下一步研究的方向。

此日誌的引用通告 url 是:

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預設的編碼 unicode 是不能顯示中文的,可能由於windows的預設編碼的問題,windows預設使用 gbk gb2312 gb18030 所以需要來更改qt程式的編碼來解決中文顯示的問題。qt中有專門的乙個類來處理編碼的問題 qtextcodec 可以以下的這些方法來設定編碼。1.設定...