QT正常顯示中文要注意的地方

來源:互聯網
上載者:User
                         
 

QT是跨平台的,我的工作環境,有三個qmake,分別是X11,qtopia-core,qtopia-core-arm。X11用來編譯PC可執行檔QT程式,qtopia-core編譯的程式可在電腦的qvfb中模擬ARM上顯示效果,qtopia-core-arm只可以在arm開發板上運行。
正常顯示中文總是遇到問題,花了一陣子搞明白了。
有兩種方法正常顯示中文,其實都不難。

1.用到的字串都用英文表示,然後利用國際化翻譯軟體Linguist處理,添加*.qm檔案,具體見以前的文章。粗略理解,這種方法的可移植性好,國際化也比較方便,只要添加不同的*.qm字型檔就好了。

2.用到的字串直接用中文表示。這時要重點注意編碼和字型,經常會出錯。linux系統下大多都是utf8編碼方式,如果自己的系統不是,就顯示不正常,

QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));

可以將utf8換成自己系統的編碼方式,例如,XP下一般是gb18030,gb2312,big5或者GBK等等很多。
如果QT介面顯示的全是亂碼,那麼這時應該就是編碼的問題。
如果QT介面顯示的全是空白,那麼這時應該就是字型的問題。
qtopia中可用的字型有限,在qtopia/lib/font裡包含了所有可用的字型,可以顯示中文的有unifont(只有一種大小),文泉驛(可選擇的大小比較多)。

app.setFont(QFont("wenquanyi", 12, 50));

有時你會發現X11編譯的程式,可以正常顯示中文。但是用qtopia-core重新編譯一次,確顯示不了。因為X11有預設的字型,只要設定了正確的utf8的編碼方式,不設定字型也可以正常顯示(在編碼是UTF8的LINUX下)。(我懷疑QT預設的編碼方式是Latin1,待驗證)。但是,qtopia-core編譯的程式,必須明確顯示用的字型,和編碼方式。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.