按照 下文中第三點,在開發闆上顯示了漢字。
《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));//這行是關鍵,沒有這行是顯示不了中文的。