`
duyouhua1214
  • 浏览: 236804 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

QT 4.7支持中文(QT4.7)(中文)(makeqpf)

    博客分类:
  • QT
 
阅读更多

摘要:

       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中程序如下:

?
#include <QtGui/QApplication>
#include <QTextCodec>
#include "hmi_desktop.h"
 
 
int main( int argc, 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();
 
     return a.exec();
}

  在开发板上运行,怎么样,字体是不是变了。高兴吧,得意吧!

  好了,别得意忘了形,其实这仅仅只是一个开始。试想,如果你要显示32或者是48字号的字体,又或者你要显示其它字体,而网上又下载不到,怎么办?

2、来点真枪实料的

  下面将介绍如何制作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多了,不知是否是设置的原因。

参考资料:

如何构建Qt4.7.0嵌入式开发环境   http://blog.163.com/allegro_tyc/blog/static/33743768201101311239471/

QT中QPF字库的制作与旋转字体的实现  http://www.360doc.com/content/10/0308/00/79031_17944837.shtml

Qt 字体大小的计算   http://losemyheaven.blog.163.com/blog/static/17071980920111283934557/

来源:http://www.cnblogs.com/liu_xf/archive/2011/07/05/2098144.html

分享到:
评论

相关推荐

    qt4.7的api

    11. **并发编程**:Qt 4.7引入了对C++11并发特性的支持,如`QThread`、`QFuture`、`QtConcurrent`等,帮助开发者更好地利用多核处理器的性能。 此外,Qt 4.7的API文档还包含了详细的示例代码、类参考和教程,帮助...

    QT4.7安装配置详细步骤及其错误分析

    在介绍QT4.7的安装配置及错误分析之前,首先要了解QT4.7是什么,它是一个跨平台的C++应用程序框架,广泛用于开发具有图形用户界面的应用程序,同时也支持开发非GUI程序,比如命令行工具和服务器。QT4.7的发布版本为...

    qt4.7-linux开发板的lib

    不过,需要注意的是,由于QT4.7已经比较老旧,可能不支持最新的功能和API,对于新项目,建议考虑升级到更现代的QT版本,如QT5或QT6,以获得更好的性能和更多的特性支持。 在开发过程中,开发者还需要熟悉QT的编程...

    qt4.7 例子源码

    QT4.7是一个非常重要的版本,它是Qt库的第四大主要版本,专注于提供跨平台的图形用户界面(GUI)开发工具。这个版本包含了丰富的示例和教程,帮助开发者理解和掌握Qt库的功能。"qt4.7 例子源码"这个压缩包显然包含了...

    qt 4.7 商业版 Commercial 种子 下载

    QT 4.7商业版是Qt库的一个重要版本,它是由 Trolltech 公司开发,后来被诺基亚收购,并成为其重要的软件开发工具。Qt 是一个跨平台的应用程序开发框架,广泛应用于桌面、移动设备和嵌入式系统,支持Windows、Linux、...

    Qt4.7的范例(Demos)

    Qt4.7支持多语言环境,Demo演示了如何使用QTranslator和QLocale类实现应用程序的国际化和本地化。 8. **OpenGL集成** Qt4.7可以与OpenGL无缝结合,用于创建高性能的3D图形应用。Demo展示了如何使用QGLWidget和...

    QT4.7下的扫雷游戏

    QT4.7是一个古老的版本,它是Qt库的一个里程碑,提供了丰富的功能用于开发跨平台的图形用户界面应用程序。在这个环境中创建的扫雷游戏,是利用Qt的C++接口和图形库来实现的。让我们深入探讨一下这个项目可能涉及的几...

    编译好的Qt4.7

    编译好的Qt4.7 还需要一个脚本配置一下就可以使用了,在tiny6410上验证过,脚本本人资源中有 交叉编译链4.5.1

    基于qt4.7图片浏览器

    - 支持多种图片格式:Qt4.7内建支持多种图片格式,如JPEG、PNG、BMP等,也可以通过插件扩展其他格式。 - 图片旋转和翻转:利用QImage的旋转函数,用户可以自由调整图片方向。 - 缩略图预览:创建一个缩略图视图,...

    qt-4.7库文件

    4. **QT4.7新特性**: - **QML**:Qt 4.7引入了Qt Quick(QML),这是一种声明式的UI设计语言,使得创建动态和富有表现力的用户界面变得更为简单。 - **OpenGL加速**:这一版本加强了对OpenGL的集成,提升了图形...

    qt4.7-sdk-win-opensource-2010.05.part5.rar

    qt一般开源的,需要在平台...)编译好的windows平台下安装版本QT4.7,xp和win7(32位)(其余系统没有测试)都可以学习用。有QT自己的IDE(集成开发环境),不用嵌入vc中。 分割为6个部分上传。解压为exe下载请注意防毒

    qt4.7版本的oracle驱动

    这可能是由于Qt 4.7引入的API变化或者对特定数据库版本的支持要求导致的。因此,用户选择重新编译适用于Qt 4.7的驱动,确保与当前项目所依赖的Qt库版本一致。 5. **MinGW编译器**: MinGW(Minimalist GNU for ...

    qt4.7编写的网络监控源码

    Qt4.7是Qt库的一个版本,提供了一套全面的API,支持多种操作系统,如Windows、Linux、macOS等。在该版本中,开发者可以利用丰富的控件和图形效果构建出美观且高效的用户界面。对于网络监控应用,Qt4.7提供了...

    Qt4.7 利用Painter drawPie绘制螺旋波形

    在本文中,我们将深入探讨如何使用Qt 4.7中的Painter类来绘制螺旋波形,这是一种近似于正弦波的图形。Qt是一个强大的跨平台应用程序开发框架,它提供了丰富的图形用户界面(GUI)功能,包括自定义图形绘制。在这个...

    C++ GUI Qt4.7编程+源码

    Qt4.7是Qt的一个版本,它包含了丰富的API和工具,支持创建功能强大的桌面应用程序。 在C++ GUI Qt4.7编程中,首先需要了解Qt的基本概念,如Qt对象模型、信号与槽机制以及事件处理。Qt对象模型是其设计的核心,所有...

    qt4.7-sdk-win-opensource-2010.05.part4.rar

    qt一般开源的,需要在平台...)编译好的windows平台下安装版本QT4.7,xp和win7(32位)(其余系统没有测试)都可以学习用。有QT自己的IDE(集成开发环境),不用嵌入vc中。 分割为6个部分上传。解压为exe下载请注意防毒

    qt4.7-sdk-win-opensource-2010.05.part3.rar

    qt一般开源的,需要在平台...)编译好的windows平台下安装版本QT4.7,xp和win7(32位)(其余系统没有测试)都可以学习用。有QT自己的IDE(集成开发环境),不用嵌入vc中。 分割为6个部分上传。解压为exe下载请注意防毒

Global site tag (gtag.js) - Google Analytics