首先轉下www.qtcn.org裡面的相關內容:
------------------------------------------------------------------------------------------------------------------------------------------------
我的QtEmbedded程式中的中文字元為什麼顯示成方塊?
兩個可能的原因:
一是qte的庫未編譯進對中文textcodec的支援, 解決方案:修改qconfig-qpe.h, 去掉CODEC有關的宏, 重新configure和make
二是程式中選用的字型不是中文字型(預設的字型是Helvetica,沒有中文), 需要在程式中指定一個中文字型, 如qte內建的unifont(這個字型大家普遍的看法是看上去像殘廢), qt4版本裡新加入了文泉驛的unicode字型, 可以在源碼包裡找到,比較漂亮, 推薦。
------------------------------------------------------------------------------------------------------------------------------------------------
接下來談談我是怎麼做的:
(1)configure的時候首先帶-h看下說明,發現預設是full安裝,就沒有CODEC這些問題,那麼顯示成方塊就是沒有中文字型了,我用unifont試了下發現可以了
(2)下載了qtopia-core-opensource-src-4.2.0,把qtopia-core-opensource-src-4.2.0/lib/fonts下面的東西全部copy覆蓋掉qt-embedded-free-3.3.5/lib/fonts下的內容,然後用wenquanyi字型,發現效果挺好的.
(3)我的測試程式如下:
#include <qapplication.h>
#include <qpushbutton.h>
#include <qtextcodec.h>
#include <qfont.h>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QTextCodec *codec = QTextCodec::codecForName("GBK");
app.setDefaultCodec(codec);
app.setFont(QFont("wenquanyi", 10));
QPushButton quit(QObject::tr("讓世界知道我們都是中國人/r/n五千年的風和雨"), 0 );
quit.resize(100, 100);
QObject::connect(&quit, SIGNAL(clicked()), &a, SLOT(quit()));
a.setMainWidget(&quit);
quit.show();
return a.exec();
}
(4)我也看了www.qtcn.org上面的Qtopia下安裝ttf字型的方法
安裝步驟:
1.將simhei.ttf拷貝到/usr/local/Trolltech/QtopiaCore-4.1.0/lib/fonts/下。
2.修改上述目錄下的fontdir檔案。這是一個文字檔,開啟後,在檔案末尾加入如下一行。
simhei simhei.ttf FT n 50 500 u
但是又說要freetype這個font engine的外掛程式,我系統裡面已經有了,而且configure預設的就帶了這個參數,我按照上面的做法試一試,發現字型很難看,沒有wenquanyi的字型好看,鬱悶的是怎麼知道freetype這個外掛程式起作用沒?