• 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
    

    后记

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

  • 相关阅读:
    【故障公告】遭遇用心良苦的疯狂攻击:DDoS + CC攻击
    Blind Signature盲签名与fabric区块链结合的应用
    Vue3.3 的新功能的一些体验
    日志导致线程Block的这些坑,你不得不防
    OpenCV的C#版本EmguCV-1、安装和环境配置
    Windows 根据dll生成 lib文件
    【MySQL 】使用原则和设计规范,详细梳理
    服务器配置Java开发环境(三)之安装mysql
    C/C++计算邮资 2019年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
    【目标检测】图像裁剪/标签可视化/图像拼接处理脚本
  • 原文地址:https://blog.csdn.net/aggs1990/article/details/126922109