整整耗费了我两天时间呀,此时终于把温泉字体显示出来了,弯路走了不少!
首先说现象:
1 、有显示,显示方块或乱码,不是汉字;
2、没有显示,即白屏
第一种:出现这种现象的原因可能是编码方式有问题
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QFont font("wenquanyi",9);
app.setFont(font);
在XP下,也就是你在XP下输入的汉字,这时codecForName里为GBK,gb18030,gb2312,big5
如果是在linux环境下,大部分都以utf8的方式编码的。
第二种:出现这种现象的原因在于你的字体库安装的是否正确
编译时字库的路径,必须和实际运行时路径一致。而且字库里的文件也要相同
举个例子:我虚拟机上QtEmbedded的字库安装路径是/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts
那么在开发板上也应该时上面那个路径。而且字库文件要一直
比如我要显示文泉驿字体,就可到qtopia源文件中的lib/fonts目录拷贝文泉驿字体到上面两个路径中,然后make 编译应用程序,下载到开发板即可运行。我出情况的原因是只拷贝到开发板的路径中,没拷贝字库虚拟机QTE的安装目录,一直无显示。
有时你会发现X11编译的程序,可以正常显示中文。但是用qtopia-core重新编译一次,确显示不了。因为X11有默认的字体,只要设置了正确的utf8的编码方式,不设置字体也可以正常显示(在编码是UTF8的LINUX下)。(我怀疑QT默认的编码方式是Latin1,待验证)。但是,qtopia-core编译的程序,必须明确显示用的字体,和编码方式。