Qt 程序使用自带 ttf 字体示例

TTF简介

  TTF(TrueTypeFont)是 Apple 公司和 Microsoft 公司共同推出的字体文件格式,随着二十多年来 windows 的流行,目前 TTF 已经变成最常用的一种字体文件表示方式。truetype 字体的最大优点是可以很方便地把字体轮廓转换成曲线,可以对曲线进行填充,制成各种颜色和效果,它可以进一步变形,制作特殊效果字体,因此经常用来制作一些标题字或花样字。
  桌面出版系统使用的字库有两种标准: postscript字库和truetype字库。这两种字体标准都是采用曲线方式描述字体轮廓,因此都可以输出很高质量的字形。truetype 字体也用来作为 postscript 字库的显示字用,各字库公司同时都有这两种标准的产品。因此当使用 truetype 字体制作版面时,输出时仍然可以将它代换成 postscript 字库输出。

Qt示例

  因为我在嵌入式 Linux 平台开发一个界面程序,需要显示中文字体,所以下载了 LiHeiPro.ttf 来使用。那么下面我们来看一下在 Qt 中应该如何操作。
  (TTF 字库路径为 /home/root/seat_imx/LiHeiPro.ttf)
  代码如下:

#include "gytboxwidget.h"
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

    int index = QFontDatabase::addApplicationFont("/home/root/seat_imx/LiHeiPro.ttf");
    if(index != -1) {
        QStringList fontList(QFontDatabase::applicationFontFamilies(index));

        /* font -- LiHei Pro */
        if(fontList.count() > 0) {
            QFont font_zh(fontList.at(0));
            font_zh.setBold(false);
            a.setFont(font_zh);
        }
    }

    GytBoxWidget w;
    w.show();

    return a.exec();
}

  之后就可以显示中文了,比如:

QLabel *label = new QLabel(this);
label->setText(tr("中国"));

你可能感兴趣的:(Qt,程序开发)