tea_liang 发表于 2010-5-22 12:14:18

令我头痛的qt4.5中文无法显示的问题!

看了阿瑟王管理员的帖子:http://bbs.embedsky.net/viewthread.php?tid=4444&highlight=QT%2B%D6%D0%CE%C4,以为问题能解决了。但我在qt creator编译完之后,放到板子上运行,还是无法显示中文,在没看到阿瑟王的帖子前,我试过了很多编码都没有解决问题。不知道还有什么问题呢?另外我用的qt4.5文件系统是最新的。在线等回复啊!麻烦速度回我啊!折磨我几天了。不知道这个QT4.5的文件系统是否支持中文???????

亚瑟王 发表于 2010-5-22 20:37:45

文件系统已经带了中文字库了,我贴出来的那个帖子就是在天嵌科技提供的文件系统中实验的。你直接使用我贴出来的那个应用程序能不能显示中文?

tea_liang 发表于 2010-5-23 11:05:31

本帖最后由 tea_liang 于 2010-5-23 11:08 编辑

2# 亚瑟王
放到开发板运行时无法显示中文的,在X86上是可以的。

现在我下载了一个中文字库,这个字库叫文泉驿,然后放到qt的fonts里面。在QT程序里面还要加一条设置字体的语句。这样在开发板就能显示中文了。我进去qt的fonts字体里面查看,看到里面是有一个字库,名字叫unifont。这个字库可能是中文字库。如果用系统自带的字库。怎么用呢?

运行你那个程序是无法正常显示中文的,是不是没有设置字体?

亚瑟王 发表于 2010-5-25 17:59:25

文泉驿这个字库是qt-4.4以前的几个Qt4版本提供的标配中文字库,不过不知道为什么从Qt-4.5开始就没有提供这个字库了。在天嵌科技提供的文件系统中是提供了unifont这个中文字库的。不过你说你哪里显示不了,我觉得很奇怪。
你能把你用文泉驿的字库添加的源码贴出来吗?

tea_liang 发表于 2010-5-28 17:24:22

可以。等一下贴出来。

亚瑟王 发表于 2010-5-29 17:01:56

把你的文泉驿的字库也打包了贴上来把,那样我就不用下载4.2的qt源码从里面拷贝文泉驿的字库了。

shifengg_310 发表于 2010-6-4 14:49:08

关注此问题 一直很头疼这个中文显示

tea_liang 发表于 2010-7-7 14:15:13

本帖最后由 tea_liang 于 2010-7-7 14:35 编辑

相信搞过QT4.5文件系统的朋友都遇到过中文字体的问题,要不是显示乱码,就是显示空白。以前遇到过这样的问题,来天嵌的官网查了解决办法,找不到有效的办法,论坛有个QT程序,说是支持中文的,是管理员发的,不过有缺陷,而且也无法显示中文,后来经过努力,解决了问题。不过今天又搞这个的时候,由于之前的工程不知道怎么搞的不见了,又遇到了问题,几经周折,终于搞掂。所以我要把自己的解决问题的经历和方法放到论坛上,和大家一起交流,并且以后再遇到问题可以上来找找。哈哈。
总结如下:

1)、天嵌公司的给的QT4.5文件系统是有中文字库的,不过我认为有缺陷,之前我说没有,现在发现在/opt/qt-4.5/lib/fonts里面有个unifont文件。调用这个字体就可以显示中文了。代码如下:
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("unifont",14,QFont::Normal));//这行是关键,没有这行是显示不了中文的。论坛给的那个程序就是没有这句。所以在板子上运行肯定是有问题的。论坛的那个QT程序大概是在PC机上模拟的。毕竟是模拟啊。
    w.setWindowTitle(QObject::tr("为什么why?"));
    w.show();
    return a.exec
}
2)、自己去下载一个字库,我下载了一个非官方的字库,叫文泉驿,这个字库当然比那个UNIFONT字库要好,字体比那个要漂亮,而且unifont的字有些大有些小,很不美观。用我自己下载的非官方的文泉驿字库,和文件系统自带的字库都是无法更改字体大小的。也就是说:w.setFont(QFont("unifont",14,QFont::Normal));无论那个数字设置成多少都是没用的。字体统一大小,而且还有个纠结的问题,窗口的标题也无法正常显示。w.setWindowTitle(QObject::tr("为什么why?"));也就是说,只能显示why?,不能显示“为什么?”。

3)、终极解决办法,去文泉驿官方网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,我自己改了它的名字,叫zhenghei.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("zhenghei",14,QFont::Normal));//这行是关键,没有这行是显示不了中文的。
    w.setWindowTitle(QObject::tr("为什么why?"));
    w.show();
    return a.exec
}
ok!搞掂了,板子上的QT终于可以显示中文了。由于文件比较大,最好可以去官方网站下载。我这里只贴出工程文件。

亚瑟王 发表于 2010-7-8 11:30:00

1、我在论坛中提供的hello_cn的程序是在开发板上面运行的,给出来的截图也是在开发板上面获取的。我给出来的参考程序都不会只在PC上仿真。
2、你可以使用论坛现在提供的文件系统,里面默认运行的qt4的demo就是hello_cn,我用TQ2440和TQ6410就可以显示中文。

loopzhong 发表于 2010-8-1 08:51:52

我也遇到中文的问题,谢谢楼主,解决了不忘说明解决的方法,谢谢。

loopzhong 发表于 2010-8-1 18:14:33

请问:标题等可以实现中文显示,可是在QTreeView中的内容(比如我把带中文名的文件送到QTreeview中显示),却不能显示中文,显示是一堆乱码。

这个问题我解决不了。

亚瑟王 发表于 2010-8-2 16:25:45

里面的内容也可以显示中文的。

shabby 发表于 2010-9-6 15:22:12

lz真乃正解

kelvinjie 发表于 2010-9-27 23:05:43

我也正在弄这个,需要学习

shangshan 发表于 2010-10-12 23:04:18

请问,我现在也是用的这个文泉驿的字体,显示都是没问题的,但是不能更改字体大小,为什么?怎么设置都不行,楼主或版主能否发个改变字体大小的在开发板上验证的例程?

谢谢。愁死了。
页: [1] 2
查看完整版本: 令我头痛的qt4.5中文无法显示的问题!