问题解决办法总结_qt4_中文字体设置
本帖最后由 embedsky_lxt 于 2010-8-30 12:33 编辑借鉴网友 "tea_liang" 的个人开发分享,现就qt4中文字体问题解决的办法总结如下。
1)、去文泉驿官方网http://wenq.org/下载一个字库回来。里面有很多字库,我选择常用的正黑。正黑字库文件下载地址是: 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,将其放到/opt/qt-4.5/lib/fonts里面,再在主函数里面修改字库的ID:
int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QApplication a(argc, argv);
Widget w;
w.setFont(QFont("wqy-zenhei",14,QFont::Normal));//这行是关键,没有这行是显示不了中文的。
w.setWindowTitle(QObject::tr("为什么why?"));
w.show();
return a.exec
} 我也这么做了,可是数据库里面用tr(“我是”),【我是】却不能显示,楼主这个问题不知可否解决下,谢谢 我按照楼主的办法设置了,而且也下载了wqy-zenhei字库,现在开发板上可以显示中文,但是却设定不了字体,大小和粗细,这是为什么? 3# shangshan
留意一下你的环境变量设置 能否明确地说一下,那些环境设置? 5# shangshan
QT_QWS_FONTDIR=$QTDIR/lib/fonts/ 这个环境量的设置 QT_QWS_FONTDIR=$QTDIR/lib/fonts/ 之前就已经加在了etc/profile里了。我是用的天嵌的板子和文件系统,所以都加好的。
我用http://bbs.embedsky.net/viewthread.php?tid=4895&highlight=qt4里提
供的示例程序做了实验:
1. 将fonts文件夹移除或改名,运行程序时提示找不到fonts文件夹的错误,这
应该说明我的qt的环境变量应该没有问题了吧。
2。将fonts文件夹里除了helvetica_120_50.qpf以外的所有字体移走都没关系
,但如果移走helvetica_120_50.qpf那么将会报错说:Failed to stat
/opt/qt-4.5/lib/fonts//helvetica_120_50.qpf
Aborted
3。将任意一个其它的字库改名为helvetica_120_50.qpf,则程序启动后会显示
相应的字体。
问题就出在:我编译出来的程序无论程序体中用w.setFont(QFont("wqy-
zenhei",14,QFont::Normal));
如何设置字体,编译完成后都使用默认的字库helvetica_120_50.qpf,这到底
是怎么回事啊?该如何解决呢? 我的交叉编译器的编译,qt4.5的编译全部都是严格使用天嵌开发板光盘里的文件,并依照《基于SKY2440/TQ2440 的Qt/Embeded 应用程序开发完全手册》中的描述进行的。文件系统直接用的光盘里带的。虚拟机里的linux用的是fedora10,为什么会出现这种总是去找默认字库helvetica_120_50.qpf的情况呢?我把unifont这个字库也给删掉了,居然还能显示中文,真是不可思议。
另外,http://doc.qt.nokia.com/3.3/emb-fonts.html 这个文档里,说qte支持四种格式的字体,但没有ttc啊? 我这个问题至今还没有解决。 9# shangshan
这里看看,网友,对你应该帮助比较大
http://bbs.embedsky.net/viewthread.php?tid=7123&extra= 版主您好,很感谢。可是这个字体我之前也试过了,放进去之后无济于事。我现在的核心问题是,qt启动后总是默认去寻找font文件夹中的helvetica_120_50.qpf这个字体。
真是不知道为什么。如我之前说的,一切都是用的天嵌调试好的。用的nfs调试方式 11# shangshan
我自己的试过很多遍,没有问题啊。
把你简单的测试程序贴来看看 QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
这些放在QApplication a(argc, argv); 就行,,,之后就行,,
我是错在这里,,, :) 11# shangshan
好像 hello_cn.cpp 里有个设置默认字体的语句,我也不太懂
页:
[1]
2