• 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()函数中,添加如下代码

    1. int fontId = QFontDatabase::addApplicationFont(QStringLiteral(":/font/HarmonyOS_Sans_SC_Black.ttf"));
    2. QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId);
    3. qDebug()<<"fontfamilies:"<
    4. if (fontFamilies.size() > 0)
    5. {
    6. QFont font;
    7. font.setFamily(fontFamilies[0]);//设置全局字体
    8. app.setFont(font);
    9. }

    2.从qml中导入

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

    1. FontLoader {
    2. id: fontLoader
    3. source: "file:fonts/HarmonyOS_Sans_SC_Black.ttf"
    4. }

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

    三、注意事项

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

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

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

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

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

    CONFIG += resources_big
    

    后记

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

  • 相关阅读:
    GMSM,CSM总结
    智能化时代与智慧化时代
    10 个 Python set 常用操作函数!,oppoPython 面试题
    【思维构造】Find The Array—CF1463B
    Maven中的继承与聚合
    竞赛 : 题目:基于深度学习的水果识别 设计 开题 技术
    EG边缘计算网关连接纵横云3.0物联网平台(MQTT协议)
    索引的数据结构、索引及其优缺点、索引的声明与使用以及索引的设计原则
    Java异常处理
    Android 11 AudioPolicyService 启动流程
  • 原文地址:https://blog.csdn.net/aggs1990/article/details/126922109