qt/embedded显示中文

本文介绍了如何解决Qt/embedded环境下中文显示问题,包括配置文泉驿Unicode字体和设置QTextCodec编码,适用于Qt/embedded2.3.7版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    关于qt/embedded无法显示中文(中文显示方块)的问题,qt中文论坛上这样说的:

两个可能的原因:
    一是qte的库未编译进对中文textcodec的支持, 解决方案:修改qconfig-qpe.h, 去掉CODEC有关的宏, 重新configure和make
    二是程序中选用的字体不是中文字体(默认的字体是Helvetica,没有中文), 需要在程序中指定一个中文字体, 如qte自带的unifont(这个字体大家普遍的看法是看上去像残废), qt4版本里新加入了文泉驿的unicode字体, 可以在源码包里找到,比较漂亮, 推荐。

    对于使用文泉驿的unicode字体,新手看了还是一头雾水,当然包括我啦。经过不断的google终于能显示中文了。我使用的是qt/embedded 2.3.7,操作系统redhat9.0

步骤:

(1)获得文泉驿的中文字体

qt4版本里面通常都有,大家可以到http://www.qtcn.org/bbs/read.php?tid=3144去下载,在lib/fonts里面有很多wenquanyi_**_**.qpf的文件,将他们复制到qt/embedded的安装文件夹下,我系统里面是$QTDIR/lib/fonts,有些帖子上说还要修改$QTDIR/lib/fontdir文件中的内容,对于.qpf的字体是不需要指定字体与实际字体文件的映射的,可以通过fontdir文件中的内容看出来。fontdir文件规则可以参考http://blog.chinaunix.net/u2/65684/showart_520041.html

wenquanyi_160_50.qpf表示16号非粗体字,wenquanyi_160_75.qpf表示16号粗体字。

(2)对于qt designer开发出的图形界面生成的.cpp文件,大体格式是这样的:

   1  TextLabel_SNo = new QLabel( this, "TextLabel_SNo" );
   2  TextLabel_SNo->setGeometry( QRect( 370, 20, 120, 30 ) ); 
   3  QFont TextLabel_SNo_font(  TextLabel_SNo->font() );
   4  TextLabel_SNo_font.setFamily( "wenquanyi" );
   5  TextLabel_SNo_font.setPointSize( 16 );
   6  TextLabel_SNo_font.setBold( TRUE );
   7  TextLabel_SNo->setFont( TextLabel_SNo_font ); 
   8  QTextCodec *codec = QTextCodec::codecForName("utf8");
   9  TextLabel_SNo->setText(codec->toUnicode("序列号", strlen("序列号")));

第3行QLabel对象TextLabel_SNo通过从QWidget继承的函数QFont font()返回窗口部件字体的当前设置,然后通过QFont的成员函数设置字体的family,size及bold。如:

        这段代码设置12点的helvetica粗字体:

        QFont f( "Helvetica", 12, QFont::Bold );
        setFont ( f );

第8行中,QTextCodec提供了各种文本编码之间的转换,需要#include <qtextcodec.h>。其中QTextCodec::codecForName("utf8")寻找utf8(Unicode,8bit)的编码,QString  QTextCodec::toUnicode ( const QCString & a, int len ) const 将中文字体“序列号”转换为Unicode格式并显示。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值