首先转下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这个插件起作用没?
------------------------------------------------------------------------------------------------------------------------------------------------
我的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这个插件起作用没?