Qt中中文處理的簡單方法

2021-08-31 12:09:27 字數 2337 閱讀 2482

qt是一套很不錯的介面開發庫,而且考慮到了跨平台的要求,使用也相對比較容易上手。我也剛剛才學習用qt開發,發現它對中文的處理做的不是很好,或者更貼切的是做的不夠智慧型吧,如果在字串中輸入中文,顯示的就會是亂碼。

下面就介紹乙個簡單的方法,讓我們的中文正確顯示出來,先看一段程式,該程式主要功能就是顯示乙個視窗,視窗上面的按鈕顯示中文。

1 #include

<

> 2

#include

<

qpushbutton.h

> 3

#include

<

qfont.h

> 4

#include

<

qvbox.h

> 5

#include

<

qtextcodec.h

> 6

#include

<

qstring.h

> 7

#include

<

qobject.h

> 8

intmain(

intargc,

char

**argv)9

在vc6.0下面編譯執行程式之後我們會見到介面如下,但是上面的按鈕卻是亂碼了。

那我們該怎麼辦呢?別著急,其實方法很簡單,主要思路就是給應用設定乙個字符集,並且把要顯示的字元做適當的轉化處理就可以了,說起來好像還有些複雜,但是看看**你就很快明白了。

1 #include

<

> 2

#include

<

qpushbutton.h

> 3

#include

<

qfont.h

> 4

#include

<

qvbox.h

> 5

#include

<

qtextcodec.h

> 6

#include

<

qstring.h

> 7

#include

<

qobject.h

> 8

intmain(

intargc,

char

**argv)9

在vc6.0下面編譯執行程式之後我們會見到介面如下,這個時候就顯示正常了。

**分析:

上面的兩段**基本上是大同小異,沒有多大的差別,程式的具體含義這裡我不做介紹,只講一下兩段**的區別,見上例中**的黃色部分,該部分就是為中文顯示所做出的改進。

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

查閱了qt的函式幫助可知,

setdefaultcodec的作用如下:

設定應用程式的預設編解碼器為codec。

如果程式中的文字引用文字不是latin1編碼,這個函式可以用來設定合適的編碼。例如,南韓程式設計師開發的軟體在程式中對所有文字可以使用euckr,這種情況下,main()函式可能看起來像這樣:

int main(int argc, char** argv)

注意,這不是使用者來選擇編碼的方式。例如,把乙個包含英語字串的應用程式轉換為韓語,所需要做的一切就是對於所有的英語字串通過tr()傳遞並且載入翻譯檔案。有關國際化的詳細情況,請參考qt國際化文件。

注意也有一些qt內建類為不同的字串呼叫tr()。這些字串使用英語,所以對於完整的翻譯,編解碼器將被這些字串需要。

qpushbuttonquit(qobject::tr("退出"),&box);

tr()函式的說明如下:

qstring qobject::tr ( const char * sourcetext, const char * comment ) const

返回sourcetext的翻譯版本,或者如果沒有合適的版本返回sourcetext它自己。翻譯上下文是comment的qobject(預設為空)。所有使用q_object巨集的qobject物件有這個函式的重新實現,把子類名作為上下文。

例項:network/networkprotocol/view.cpp。

qstring qobject::trutf8 ( const char * sourcetext, const char * comment ) const

返回sourcetext的翻譯版本,或者如果沒有合適的版本返回qstring::fromutf8(sourcetext)。它是另一種tr(sourcetext, comment)。

兩個函式的作用乙個用來設定字符集乙個是用來進行字串轉化,剛好滿足了前面提到的思路,事情就是這樣的,呵呵,就寫到這裡,希望對你有用。

改進Django中的表單的簡單方法

首先,search 檢視對於空字串的處理相當薄弱 僅顯示一條 please submit a search term.的提示資訊。若使用者要重新填寫表單必須自行點選 後退 按鈕,這種做法既糟糕又不專業。如果在現實的案例中,我們這樣子編寫,那麼django的優勢將蕩然無存。在檢測到空字串時更好的解決方...

行業分析的簡單方法

在本本上沉寂了一段時間的內容,今天還是把它拾倒出來,免得就這樣日後不見在故紙堆中了。這是乙個講座的記錄,演講人就是那些在4大或美國華爾街的很多華人諮詢分析師 偏重數理和模型的那類 的老師,所以記得還很認真。上來就是教育我們行業分析是多重要,在美國諮詢業,行業分析師收入是最高的,百萬年薪 利誘 言規正...

事件抽取的簡單方法

再構建event graph,不免要用到event extraction的方法,這裡引用了一篇別人的總結作為參考學習 關係抽取 定義 自動識別實體之間具有的某種語義關係。根據參與實體的多少可以分為二元關係抽取 兩個實體 和多元關係抽取 三個及以上實體 通過關注兩個實體間的語義關係,可以得到 arg1...