Qt4.7在ARM开发板上如何设置中文显示

转载 2012年03月28日 08:17:21
摘要:
       QT4.7.0在移植到开发板上的时候,中文支持是必不可少的,如何让QT支持中文,如何制作QT支持的字体文件,如何使QT UI编辑器中的字号与开发板中的字号一致。作者通过实验进行了一一验证。
介绍:
 1、初体验:
   QT程序中指明的字体和字号在/fonts目录下没有对应的字库文件时,QT会选择某一个存在的字库文件来显示;那么,如果你的系统中只有需要一种字体和字号,那么则可以将fonts目录下不需要的字库文件全部删掉,只保留这个需要的字体文件即可
    上面是一种很方便的做法,无论程序中设置的字体和字号是怎样的,它始终都会按fonts目录下的这个唯一的字库文件格式来显示。但是,很多时候,我们需要多种字体和字号并存,那么下面将介绍如何添加wenquanyi 12 13 15 16 四种字号粗体和细体共8个字库文件,然后通过QFont来设置它们,访问对应的字库文件。

    首先,下载font_wenquanyi字体,字体有ttf、bdf、qpf等格式,我们这里下载的是qpf格式,如果是其它格式,则需要进行转换。

然后将下载的字库文件复制到开发板的/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib/fonts目录下,如下图:


 
以wenquanyi_150_50为例:wenquanyi是字体,150表示是15号字体,50表示细体,75表示粗体。
qt中程序如下:

以wenquanyi_150_50为例:wenquanyi是字体,150表示是15号字体,50表示细体,75表示粗体。
qt中程序如下:

#include <QtGui/QApplication>
#include <QTextCodec>
#include "hmi_desktop.h"
 
intmain(intargc, char*argv[])
{
    QApplication a(argc, argv);
    //中文支持
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));       //支持Tr中文
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));//支持中文文件名显示
    QFont font;
    font.setPointSize(160);//实际上是16的字号,但设成16却不行
    font.setFamily(("wenquanyi"));
    font.setBold(false);

    a.setFont(font);
    //--
    Hmi_desktop w;
    w.show();
    returna.exec();
}
  在开发板上运行,怎么样,字体是不是变了。高兴吧,得意吧!
  好了,别得意忘了形,其实这仅仅只是一个开始。试想,如果你要显示32或者是48字号的字体,又或者你要显示其它字体,而网上又下载不到,怎么办?


2、如何制作QPF文件

       来点真枪实料的,下面将介绍如何制作QPF文件。

  QT有一个工具:makeqpf,是专门用来转换qpf文件的,但这个程序只能在嵌入式环境下运行,所以需要编译X86版的QT4.7。
  解压qt-everywhere-opensource-src-4.7.0.tar.gz,并将其复制两份,分别命名为:qt-4.7.0-x86,qt-4.7.0-pc(编译x86是为了得到makeqpf,编译pc是为了得到qvfb,arm版的之前编译了,这里就不用了)

cd qt-4.7.0-x86
./configure -prefix /usr/local/Trolltech/qt-4.7.0-x86 -opensource -confirm-license -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb -make tools
make
make install
 
cd qt-4.7.0-pc
./configure -prefix /usr/local/Trolltech/qt-4.7.0-pc -opensource -confirm-license
make
make install
 
#接下来安装PC版本的qvfp
cd qt-4.7.0-pc
cd tools/qvfp
make
cp qt-4.7.0-pc/bin/qvfp /usr/local/Trolltech/qt-4.7.0-x86/bin
  安装完成后,在下面的目录里就可以找到它们

cd /usr/local/Trolltech/qt-4.7.0-x86/bin/
   准备要转换的字体文件,可在C:\WINDOWS\Fonts 下找,或者去下载。  
       这里我们是下载的wqy-zenhei.ttf。
  将wqy-zenhei.ttf字体文件拷贝到/usr/local/Trolltech/qt-4.7.0-x86/lib/fonts中,这样是为了在makeqpf中找到它
  启动qvfb,并在qvfb里运行makeqpf软件

./qvfb -width 800 -height 480 &
./makeqpf -qws


分别输出16、24、32等字号,这样在输出路径指定的目录里就能看到这些文件了(注意:如果是选择根目录,则看不到文件,要在终端里才能看到)


     为什么是qpf2,细致的朋友可能看出来了,这得说明一下,qpf是qt2和qt3用的,后来qt4改成了qpf2,而且我们可以看到,字号16的,直接就是16,不再是160了,下面就来看看使用吧,和上面的还是有一点点区别的。
  还是向上面一样设置,假设我要显示24号的字体:


    QFont font;
    font.setPointSize(160);  这里是设成24吗,设置后发现很小,只有当设成80的时候,才够24的大小,看了帮助文档后,发现原来 setPixelSize 才是设置字号的,改成 font.setPixelSize(24); 就可以了。(pointSize是一个相对值,和DPI相关;一般Windows上的DPI值是96,而embedded linux的DPI值一般是72,所以字体会显得小了很多。所以应该用QFont::setPixelSize)。
font.setFamily(("wenquanyi"));//这个Family怎么设,是文件名吗,不是,要在这里看

font.setFamily((" 
WenQuanYi Zen Hei"));
//有空格的,不要丢了
其它的设置就一样了,
运行一下,字是不是变大了。
3、解决setPointSize字太小的问题
   在UI编辑器里,并没有setPixelSize的设置,只有setPointSize。如果要在开发板上显示正常的字号,必须要将PointSize设得很大,那么在计算机上的字就变得超大,无法通过ui编辑器达到所见即所得的效果。前面我们说过,这是因为显示器DPI不同的原因。在QT应用中,可通过环境变量来设置DPI,如下:
export QWS_DISPLAY="LinuxFB:mmWidth95:0" 
export QWS_SIZE="640x480"
  重新启动QT应用程序时,发现字号和计算机上的字号相差不那么大了,95的值并不是很准确,需要跟据显示器来调整,输入合适的DPI值,(我用群创AT056TN53的屏,DPI值设置为180比较合适)
4、进一步的尝试
  QT直接支持TTF的字体文件,我们直接复制几个ttf文件,至/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib/fonts目录下,将qpf的文件删除



重新在开发板上运行,发现几种字体和字号都能支持,看来系统中有多种字号,用ttf文件还是蛮方便的。
结语:
     有人说,ttf文件很大,比较费flash,QPF是点阵字库文件,占用flash较小,而且访问速度比ttf快。目前,通过目测暂时分辩不出快慢,但TTF文件只有10M左右,转换出来的qpf文件加起来一共有一百来兆。比ttf费flash多了,不知是否是设置的原因。

注:本篇博客转载自 http://www.cnblogs.com/liu_xf/archive/2011/07/05/2098144.html,最近在研究开发板上中文界面的显示,感觉这篇文章总结的不错,另外文泉驿字体在CSDN的下载链接 http://download.csdn.net/detail/kenter1643/2539478,希望这篇博客能帮助到您。


前端开发遇到的坑(纯属吐槽)

沟通问题!! 没别的就是沟通问题!!!

H264参数SPS(序列参数集)和PPS(图像参数集)说明

在文章开始之前,先看图一: 图一 从图一中我们看到SPS,PPS。这是符合H.264码流中第一个NALU是SPS,第二个NALU是PPS。SPS和PPS包含了 初始化H.264解码器所需...

Qt4.7在ARM开发板上如何设置中文显示

摘要:        QT4.7.0在移植到开发板上的时候,中文支持是必不可少的,如何让QT支持中文,如何制作QT支持的字体文件,如何使QT UI编辑器中的字号与开发板中的字号一致。作者通过实验进行...

Qt4.7在ARM开发板上如何设置中文显示

摘要:        QT4.7.0在移植到开发板上的时候,中文支持是必不可少的,如何让QT支持中文,如何制作QT支持的字体文件,如何使QT UI编辑器中的字号与开发板中的字号一致。作者通过实验进行...

摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用

环境: Ubuntu10.04 arm linux OS: 3.0.1 arm上 qt-4.7.1 g++ / gcc 4.4.3 arm-linux-g++ / arm-linux-gcc...
  • JasonQue
  • JasonQue
  • 2013年01月05日 15:58
  • 10288

摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用

摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用 发布者:旺旺雪饼   时间:2013-01-05 16:56:09 环境: ...

Qt4.7 在开发板上的中文显示问题

摘要:        QT4.7.0在移植到开发板上的时候,中文支持是必不可少的,如何让QT支持中文,如何制作QT支持的字体文件,如何使QT UI编辑器中的字号与开发板中的字号一致。作者通过实验进行...

Qt Creator远程调试嵌入式ARM开发板上的Linux程序

Qt自带调试功能,如果是主机上的程序可以直接调试,非常方便。同时,Qt是一个跨平台的编程语言,在主机上调试其他平台上的程序时就需要相应的设置。这种跨平台的调试在嵌入式开发时尤为重要,这里对跨平台的Qt...

关于Qt移植后环境变量的设置 qt移植到arm中文显示问题解决 实现pc与tiny210 arm开发板 udp通信

1,Qt编译arm版本后,里面有很多歌文件夹。其实只需要将里面的lib文件夹拷贝到板子上就行了。有文章说要把plugin文件夹也一并拷过去。我没拷,也没发现问题。 拷贝时先将lib文件夹tar压缩后...

移植qt库到arm开发板上 测试 QT项目

toshiba@ubuntu:~/ck/myDialog1$ ls about.cpp  images    myapp.ICO      myDialog1.pro.user  mywidget....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt4.7在ARM开发板上如何设置中文显示
举报原因:
原因补充:

(最多只允许输入30个字)