QT是跨平臺(tái)的,我的工作環(huán)境,有三個(gè)qmake,分別是X11,qtopia-core,qtopia-
core-arm。X11用來編譯PC可執(zhí)行的QT程序,qtopia-core編譯的程序可在電腦的qvfb中仿真ARM上顯示效果,qtopia-
core-arm只可以在arm開發(fā)板上運(yùn)行。 正常顯示中文總是遇到問題,花了一陣子搞明白了。 有兩種方法正常顯示中文,其實(shí)都不難。
1.用到的字符串都用英文表示,然后利用國際化翻譯軟件Linguist處理,添加*.qm文件,具體見以前的帖子。粗略理解,這種方法的可移植性好,國際化也比較方便,只要添加不同的*.qm字體文件就好了。
2.用到的字符串直接用中文表示。這時(shí)要重點(diǎn)注意編碼和字體,經(jīng)常會(huì)出錯(cuò)。linux系統(tǒng)下大多都是utf8編碼方式,如果自己的系統(tǒng)不是,就顯示不正常,
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
可以將utf8換成自己系統(tǒng)的編碼方式,例如,XP下一般是gb18030,gb2312,big5或者GBK等等很多。 如果QT界面顯示的全是亂碼,那么這時(shí)應(yīng)該就是編碼的問題。 如果QT界面顯示的全是空白,那么這時(shí)應(yīng)該就是字體的問題。 qtopia中可用的字體有限,在qtopia/lib/font里包含了所有可用的字體,可以顯示中文的有unifont(只有一種大?。?,文泉驛(可選擇的大小比較多)。
app.setFont(QFont("wenquanyi", 12, 50));
有
時(shí)你會(huì)發(fā)現(xiàn)X11編譯的程序,可以正常顯示中文。但是用qtopia-core重新編譯一次,確顯示不了。因?yàn)閄11有默認(rèn)的字體,只要設(shè)置了正確的
utf8的編碼方式,不設(shè)置字體也可以正常顯示(在編碼是UTF8的LINUX下)。(我懷疑QT默認(rèn)的編碼方式是Latin1,待驗(yàn)證)。但
是,qtopia-core編譯的程序,必須明確顯示用的字體,和編碼方式。
|