首页 新闻 工控搜 论坛 厂商论坛 产品 方案 厂商 人才 文摘 下载 展览
中华工控网首页
  P L C | 变频器与传动 | 传感器 | 现场检测仪表 | 工控软件 | 人机界面 | 运动控制
  D C S | 工业以太网 | 现场总线 | 显示调节仪表 | 数据采集 | 数传测控 | 工业安全
  电 源 | 嵌入式系统 | PC based | 机柜箱体壳体 | 低压电器 | 机器视觉
QT中文字体的显示方法
杭州迈冲科技有限公司
收藏本文     查看收藏
                QT中文字体的显示方法
一、QT显示中文失败的原因,如显示为方块或乱码
1)qte的库未编译进对中文textcodec的支持,解决方案:修改qconfig-qpe.h, 去掉CODEC有关的宏,重新configure和make
2)程序中选用的字体不是中文字体(默认的字体是Helvetica,没有中文),需要在程序中指定一个中文字体,如qte自带的unifont,或选用qt4版本里新加入的文泉驿的字体。
 
二、使用翻译器来使用中文
如果考虑到你的程序将来会使用多种不同的语言,则在设计时可以采用翻译器的方法来实现,将来只需替换掉你的翻译文件,就可为程序换掉显示语言,使用中文显示或者其他语言显示等都很方便。
1.       程序中的准备:
  在main.cpp中加入如下代码
QFont font1(“unifont”,16,50,FALSE,QFont::Unicode);
qApp->setFont(font1);
QTranslator *translator = new QTranslator(0);
translator->load("xxx.qm",".");
qApp->installTranslator(translator);
2.翻译文件制作方法:
1)findtr 文件名(通常为CPP文件) > xxx.po 
findtr *.cpp >xxx.po  产生一个新的po
mergetr xxx.po  aa.po  //合并到旧的po文件中
2)编辑po文件,其中charset需由iso-8859-1改为GB2312,然后将里面的待翻译文字逐个翻译。如“main button”翻译成“主按钮”
3)msg2qm –scope zh_CN.GB2312 xxx.po xxx.qm   转为二进制翻译文件
 
3.程序中的使用
所有需要翻译的文字在程序代码中用tr包含起来,如:
QButtonGroup *buttongrp=new QButtonGroup(tr("main button"),this);
则程序运行后,控件显示时直接会显示中文字体“主按钮”
4.其他应用
对于控件中动态可变的文字的汉化,可采用数组方式,加入关键字QT_TRANSLATE_NOOP:
static const char* strings[] = {
                     QT_TRANSLATE_NOOP("MyWindow", "Hello" ),   //前一个是类名,后一个是字符串
                     QT_TRANSLATE_NOOP( " MyWindow ","World" )
              };
使用时如button->setText(tr(strings[0]));
即可从翻译文件中取出Hello的中文翻译“你好”,动态的显示在按钮空间上。
三、直接在程序中写入中文
程序中的准备:
在main.cpp中加入如下代码
app.setDefaultCodec(QTextCodec::codecForName("GBK"));设置字符编码      font1("unifont",16,50,FALSE,QFont::Unicode);  建立字体
       qApp->setFont(font1); 设置字体
程序中使用中文:
QButtonGroup *buttongrp=new QButtonGroup(tr("你好"),this);
则程序运行后,控件显示时直接会显示中文字体“你好”
 

 

状 态: 离线

公司简介
产品目录

公司名称: 杭州迈冲科技有限公司
联 系 人: 朱——
电  话: 0571-87973488
传  真: 0571-87976488
地  址: 杭州市西湖区西湖科技园金蓬街366号1号楼3楼
邮  编: 310013
主  页:
 
该厂商相关技术文摘:
基于ATMEL AT91SAM9261开发板的QT移植
基于ATMEL AT91SAM9261开发板的MiniGUI移植
更多文摘...
立即发送询问信息在线联系该技术文摘厂商:
用户名: 密码: 免费注册为中华工控网会员
请留下您的有效联系方式,以方便我们及时与您联络

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 不良信息举报
工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2022 Gkong.com, All Rights Reserved