自己编译QT时遇到的中文显示问题整理

之前使用师兄移植好的QT环境进行QT程序开发,对移植的难度没有充分的认识。今天有些空闲时间,就在网上查了一些资料,对nokia新出的QT4.6.2进行了移植。在这里感谢arm9之家的各位老大,在国内做移植最好的团队果然还是友善之臂:)。自勉如下:学无止境,所以仍需继续努力!
下面进入正题,移植方面大家可参考arm9之家ppacctv兄的"Fedora12下搭建Qt Creator的ARM开发环境并移植Qt4.6.2到Micro2440"文章,上面过程应该算是非常详细,我侧重移植后的中文显示配置做一些补充:


一、在qvfb上运行时,中文完全没有显示,但是同一字符串中英文字符可以显示出来。例如“哈哈ha”只显示“ha”。应该是字体库移植问题,可以在网络上下载开源的文泉驿字体库,个人认为该字库在美观方面做的非常好。将wqy-zenhei.ttc复制到安装好的Trolltech/QtEmbedded-4.6.2/lib/fonts中,运行qt程序时加上-fn wqy-zenhei选项就可以了。


二、在默认的情况下,qvfb会调用字符库中的"DejaVu Sans" 系列字体(可以通过QFont对象看到默认字体,如:  QFont font;    qDebug()<<font.family();),但如果找不到默认字体qvfb就会搜索fonts目录中的其他字体,所以也可以通过把其他字体都删除的办法,只留下wqy-zenhei.ttc。就不必加-fn wqy-zenhei选项了。


三、可通过设置环境变量:export QT_QWS_FONTDIR=$path-to-your-fontdir指向你自己的字体目录。当默认的Trolltech/QtEmbedded-4.6.2/lib/fonts中没有可用字体时,会查找该目录。


四、QT默认的编码(unicode)在显示中文的过程中会出现乱码(注意区别于第一条的完全没有显示),主要是由于源代码文件的中文字符编码是utf8或者gbk等(与编辑器设置有关)。QT中的QTextCodec类专门用于处理编码问题。以文件编码为utf8为例,代码中增加:
    #include <QTextCodec>
    main()
    {
    QApplication app(argc,argv);
    QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
    QLabel hello(QObject::tr("你好") );
    }
也可以用codecForLocale函数来返回现在系统的默认编码,这样更容易做多编码的程序而不用自己手动来更改具体的编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值