Qt显示多种字号大小

转载 2013年12月04日 20:10:21

Qt显示多种字号大小

          

ZZZ:http://hi.baidu.com/weiweisuo1986/item/4f6b9797999836bc83d29501

Qt显示多种字号大小

            最近在做的项目,固网信息机,遇到了Qt中文化的问题。倒不是显示不了中文,而是大小的问题。

项目中移植了文泉驿的中文字库,能够很好的地显示中文!(这里非常感谢文泉驿,给我们的Qt中文化提供了很大的方便!)但是有一个问题,文泉驿的字库只支持一种字号大小,比如wenquanyi_160_50.qpf,表示16d大小的汉字。如果系统里面还要显示其他字号的汉字,就比较麻烦,比如现在这个项目,汉字用文泉驿的没有问题,但是进入到拨号界面,显示的拨出的号码非常小,很不合理!

           后面在网上找了下,发现.ttf格式的字体可以支持多种字号大小。于是在windows里找到一个常用的仿宋字库simfang.ttf,放到/usr/lib/fonts里,再在应用程序中设置QFont font("simfang",60,QFont::Normal)。普通界面显示60号字体;在拨号界面,显示240号的字体,发现比较舒服!

       开发板上运行APP,发现几种字体和字号都能支持,看来系统中有多种字号,用ttf文件还是蛮方便的。


=====================另一篇文章=======================


QT/E 支持 多种 字号

QT/E 里面用的字库 *.qpf 都是点阵的,占空间大,并且一个字库只能显示一种字体,对于开发来说是很为难的,所以,希望可以在占用尽量小的空间下,用一个字库,显示多种字号

下面介绍一下方法;
QT/E 目录结构:
/qt
/qt/bin
/qt/lib
/qt/lib/fonts
/qt/examples

1. 首先编译 QT/E 的时候,QT/E的库文件需要  freetype 的支持,所以去掉选项 -no-freetype,推荐选项如下:
./configure -fast  -qt-gif -xplatform qws/linux-arm-g++ -qt-style-windows -thread -pch -no-ipv6 -qt-libpng -qt-libjpeg -qt-libmng -embedded arm -little-endian  -depths 4,8,16,24,32 -qt-mouse-linuxtp -qt-mouse-bus -qt-kbd-tty -qt-gfx-vga16 -shared -release -v  -no-cups -no-nis

将生产的库文件  libqte-mt.so.3.3.8  拷贝到 开发板的  /qt/lib/  目录下
关于 QT/E的编译请看另一篇文章

2. 在 windows 下选择一种字体, 选择 *.ttf 格式的,以仿宋为例(simfang.ttf)

3. 将文件 simfang.ttf 放到开发板 的 /qt/lib/fonts 目录

4. 修改 fonts 目录 下的 fontdir 文件,增加下面一行(此时可以将其余的都去掉,注意第一行不要是空的)
simfang simfang.ttf FT n 75 360 su

这样就可以了,下面测试一下

自己写个小程序,里面有多种字号,放到开发板,运行一下,看一下效果
我的可以,有问题咱再讨论
===================sno:自己在tiny4412Qt界面上的验证:
1, 把文件放到/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib/fonts/下面,如下
simfang.ttf           wenquanyi_130_50.qpf  wenquanyi_160_50.qpf                
unifont_160_50.qpf    wenquanyi_130_75.qpf  wenquanyi_160_75.qpf                
wenquanyi_120_50.qpf  wenquanyi_150_50.qpf  xx.tar.gz                           
wenquanyi_120_75.qpf  wenquanyi_150_75.qpf 
2. 在Qt代码中这样写:
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 font2("simfang",20,QFont::Normal);///<----这里的20是字号,可以修改为12,---60等常用字号
        a.setFont(font2);


    Widget w;
    w.show();
    
    return a.exec();
}

3,在qt中运行既可以。

相关文章推荐

Qt4.8.6 ARM(DM3730)中文显示,文泉驿正黑

这类文章其实好多网友分享,但是这几天遇到一个奇葩问题,不得不记录一下。 一个DM3730开发板把文泉驿正黑字体拷贝到qt的fonts目录中,重启开发板后就能正常显示中文了,但是另外一块开发板却不行,就...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

利用K-means聚类算法根据经纬度坐标对中国省市进行聚类

K-means聚类算法是一种非层次聚类算法,在最小误差的基础上将数据划分了特定的类,类间利用距离作为相似度指标,两个向量之间的距离越小,其相似度就越高。程序读取全国省市经纬度坐标,然后根据经纬度坐标进...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Radon变换理论介绍与matlab实现--经验交流

本人最近在研究Radon变换,在查阅了各种资料之后在此写下个人的理解,希望与各位牛牛进行交流共同进步,也使得理解更加深刻些。 Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平...

CT图像重建技术

由于csdn贴图不方便,并且不能上传附件,我把原文上传到了资源空间CT图像重建技术 1.引言 计算机层析成像(Computed Tomography,CT)是通过对物体进行不同角度的射线投影测量而...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt显示多种字号大小
举报原因:
原因补充:

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