天天看點

嵌入式開發闆上漢字無法顯示

按照 下文中第三點,在開發闆上顯示了漢字。

《QT4.5編寫程式在arm開發闆上無法顯示中文的問題》 

1)、天嵌公司的給的QT4.5檔案系統是有中文字庫的,不過我認為有缺陷,之前我說沒有,現在發現在/opt/qt-4.5/lib/fonts裡面有個unifont檔案。調用這個字型就可以顯示中文了。代碼如下:

int main(int argc, char *argv[])

{

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

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("uinifont"));

QTextCodec::setCodecForLocale(QTextCodec::codecForName("uinifont"));

QApplication a(argc, argv);

Widget w;

w.setFont(QFont("unifont",14,QFont::Normal));//這行是關鍵,沒有這行是顯示不了中文的。論壇給的那個程式就是沒有這句。是以在闆子上運作肯定是有問題的。論壇的那個QT程式大概是在PC機上模拟的。畢竟是模拟啊。

w.setWindowTitle(QObject::tr("為什麼why?"));

w.show();

return a.exec

}

注:此方法試過可行,若要顯示的中文在另外的檔案函數中,則主函數調用那個另外的檔案函數,則以上程式不能成功顯示中文,應把QTextCodec::setCodecForTr(...)...這三句也放到那個檔案函數中,才可以顯示出中文

2)、自己去下載下傳一個字庫,我下載下傳了一個非官方的字庫,叫文泉驿,這個字庫當然比那個UNIFONT字庫要好,字型比那個要漂亮,而且unifont的字有些大有些小,很不美觀。用我自己下載下傳的非官方的文泉驿字庫,和檔案系統自帶的字庫都是無法更改字型大小的。也就是說:w.setFont(QFont("unifont",14,QFont::Normal));無論那個數字設定成多少都是沒用的。字型統一大小,而且還有個糾結的問題,視窗的标題也無法正常顯示。w.setWindowTitle(QObject::tr("為什麼why?"));也就是說,隻能顯示why?,不能顯示“為什麼?”。

具體如下:

下載下傳文泉驿正黑字型qpf字型庫,  可以找到下載下傳,把下載下傳好的字型庫解壓後的qpf檔案放入lib/fonts中(qtX86和arm版本以及移植的檔案系統中都放入此子體);再在程式中如1)方法添加代碼,隻用把uinifont改成wenquanyi即可

3)、終極解決辦法,去文泉驿官方網 ​​http://wenq.org/​​ 下載下傳一個字庫回來。裡面有很多字庫,我選擇常用的正黑。正黑字庫檔案下載下傳位址是:[url]http://downloads.sourceforge.net/project/wqy/wqy-zenhei/0.8.38%20(Pangu)/wqy-zenhei-0.8.38-1.tar.gz?use_mirror=nchc&18950117

下載下傳回來的檔案裡面有這樣一個檔案:wqy-zenhei.ttc,我自己改了它的名字,叫zhenghei.ttc(這個由你喜歡),然後放到/opt/qt-4.5/lib/fonts裡面,再在主函數裡面修改字庫的ID:

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

w.setFont(QFont("zhenghei",14,QFont::Normal));//這行是關鍵,沒有這行是顯示不了中文的。

繼續閱讀