Qt添加自定义字体

前言

Qt中加入字体是一个很常见的需求,实现方法也不唯一,笔者记录下常用的几种方法

一、导入字体的常见需求

1.为显示中文

一些特别的平台发布时,平台本身是没有安装中文字体的,此时只想导入一种中文字体,以显示中文。

如android、WebAssembly、linux系统,经常会缺少中文字体

2.为显示特殊符号

在某些条件受限时,经常无UI设计的图标,此时可以使用图标字体。很多工具或平台都支持,将已有的图标导入到字体文件中,使用时和字体相同,只是显示的是图标,如Fontello - icon fonts generator

3.其他

其他情况就不解释了,大部分是功能上的需求。

二、常见使用方法

1.从C++中导入

Qt中有现成的导入函数:QFontDatabase::addApplicationFont()

只要把字体文件导入就可以了

QFontDatabase::addApplicationFont(QStringLiteral(":/font/HarmonyOS_Sans_SC_Black.ttf"));

 导入后,可以在需要用到的地方,直接将QFont的family属性设置成对应名字就可以。

若是需要设置为默认字体,可以在main()函数中,添加如下代码

int fontId = QFontDatabase::addApplicationFont(QStringLiteral(":/font/HarmonyOS_Sans_SC_Black.ttf"));
QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId);
qDebug()<<"fontfamilies:"< 0)
{
    QFont font;
    font.setFamily(fontFamilies[0]);//设置全局字体
    app.setFont(font);
}

2.从qml中导入

qml提供了FontLoader类型,用于处理字体导入,只需将字体文件的位置赋给source属性就可以了。使用也很简单,FontLoader类型提供了font和name属性,在需要用到的地方,直接使用就可以。

FontLoader {
    id: fontLoader
    source: "file:fonts/HarmonyOS_Sans_SC_Black.ttf"
}

注:字体文件来源、大小 路径

三、注意事项

1.字体文件可放在资源文件中,也可以在绝对路径或相对路径。

笔者建议,若是桌面程序,字体文件在应用程序打包时放入,使用绝对路径;若是移动或web程序,建议放入资源文件中

2.不少字体文件有版权限制,商用时要注意下

3.不建议直接使用相对路径中的“.”,若是通过快捷方式启动的程序,“.”是快捷方式所在目录,不是应用程序的实际目录

4.若有必要,可以对指定字体进行裁剪,以减少字体大小。若字体确实很大,使用qmake可以在.pro文件中添加

CONFIG += resources_big

后记

以上只是笔者记忆里的东西,若有缺少,后补充吧。

你可能感兴趣的:(Qt通用,qt)