Qt显示多种字号大小

来源:互联网 发布:软件开发人员资质证书 编辑:程序博客网 时间:2024/05/01 07:30

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文件还是蛮方便的。


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

ZZZ:http://hi.baidu.com/pufvxeemebbatzq/item/6b29f12fea8639d4a417b636

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中运行既可以。

原创粉丝点击