天嵌_support1 发表于 2010-8-30 12:27:42

问题解决办法总结_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
}

wangda 发表于 2010-8-31 20:32:02

我也这么做了,可是数据库里面用tr(“我是”),【我是】却不能显示,楼主这个问题不知可否解决下,谢谢

shangshan 发表于 2010-10-12 22:40:35

我按照楼主的办法设置了,而且也下载了wqy-zenhei字库,现在开发板上可以显示中文,但是却设定不了字体,大小和粗细,这是为什么?

天嵌_support1 发表于 2010-10-13 11:44:41

3# shangshan


留意一下你的环境变量设置

shangshan 发表于 2010-10-13 15:51:15

能否明确地说一下,那些环境设置?

天嵌_support1 发表于 2010-10-13 17:59:56

5# shangshan


QT_QWS_FONTDIR=$QTDIR/lib/fonts/ 这个环境量的设置

shangshan 发表于 2010-10-13 21:17:03

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,这到底

是怎么回事啊?该如何解决呢?

shangshan 发表于 2010-10-14 11:25:00

我的交叉编译器的编译,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啊?

shangshan 发表于 2010-10-22 19:17:25

我这个问题至今还没有解决。

天嵌_support1 发表于 2010-10-23 11:35:29

9# shangshan


这里看看,网友,对你应该帮助比较大
http://bbs.embedsky.net/viewthread.php?tid=7123&extra=

shangshan 发表于 2010-10-24 16:37:08

版主您好,很感谢。可是这个字体我之前也试过了,放进去之后无济于事。我现在的核心问题是,qt启动后总是默认去寻找font文件夹中的helvetica_120_50.qpf这个字体。

真是不知道为什么。如我之前说的,一切都是用的天嵌调试好的。用的nfs调试方式

天嵌_support1 发表于 2010-10-25 17:04:37

11# shangshan


我自己的试过很多遍,没有问题啊。
把你简单的测试程序贴来看看

cexowginui 发表于 2010-12-3 22:47:07

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
这些放在QApplication a(argc, argv); 就行,,,之后就行,,
我是错在这里,,,

天嵌_support1 发表于 2010-12-4 11:09:03

:)

lkcumt 发表于 2010-12-4 12:36:24

11# shangshan


好像 hello_cn.cpp 里有个设置默认字体的语句,我也不太懂
页: [1] 2
查看完整版本: 问题解决办法总结_qt4_中文字体设置