在qt项目中使用外部第三方字体库字体


一、第三方字体库字体

在项目开发中,有时候我们可能会由于某些原因会用到qt所提供的字体库之外的字体,这个时候就不可以直接设置字体了,需要做一些操作才行。比如我想使用 “阿里巴巴普惠体” 这个字体。

二、使用方法

1、直接代码添加

在 Qt 中,可以使用 QFontDatabase 类来加载和使用除 Qt 字体库之外的字体。QFontDatabase 提供了一些方法,用于获取系统中已经安装的字体信息,以及加载自定义字体文件。

以下是一个示例代码,演示如何使用 QFontDatabase 加载自定义字体文件:

#include <QApplication>
#include <QFontDatabase>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    
    // 加载自定义字体文件
    int fontId = QFontDatabase::addApplicationFont(QCoreApplication::applicationDirPath() + "/Resource/fonts/Alibaba-PuHuiTi-Medium.ttf");
    
    // 获取字体族名称
    QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);
    
    // 使用自定义字体
    QFont font(fontName, 12);
    QApplication::setFont(font);
    
    // ...
    
    return app.exec();
}

在上面的示例代码中,首先使用 QFontDatabase::addApplicationFont 方法加载自定义字体文件,返回字体 ID。然后通过 QFontDatabase::applicationFontFamilies 方法获取已加载字体文件的字体族名称,并使用 QFont 设置字体族名称和字体大小。最后使用 QApplication::setFont 方法设置默认字体为自定义字体。

在加载字体文件时,需要注意以下几个细节:

  • 字体文件必须是字体格式文件,例如 .ttf、.otf 等,否则可能无法加载成功。
  • 如果要在 Qt 应用程序中使用已安装的字体文件,可以使用 addApplicationFontFromData() 方法,该方法接受一个字节数组作为参数,可以从字体文件读取数据并加载字体。
  • 加载的字体文件将在应用程序退出时自动卸载,不需要手动卸载。
  • 需要注意的是,如果在应用程序中使用了 Qt Style Sheets (QSS),则可能会覆盖默认字体设置。在这种情况下,需要在 QSS 中明确指定要使用的字体。可以使用 font-family 属性来指定字体名称。

2、使用QSS进行添加

  • 要使用的字体直接安装在操作系统中,字体文件 “.otf” 或者 “.ttf” 进行安装在这里插入图片描述

    查找安装的字体可以通过 设置 – 控制面板 – 字体 进行查看已经安装的系统字体

    然后在qss中使用font-family来指定名称进行设置:

    QPushButton
    {
    	/*阿里巴巴普惠体*/
    	font-family: "Alibaba PuHuiTi";
    }
    
  • 如果不想把字体安装到操作系统中也是可以的,利用 QFontDatabase::addApplicationFont 方法加载自定义字体文件,然后在qss中利用font-family属性直接按名称设置,例如:

    // 加载外部字体文件
    QFontDatabase::addApplicationFont(QCoreApplication::applicationDirPath() + "/Resource/fonts/Alibaba-PuHuiTi-Medium.ttf");
    
    // 在 QSS 中使用外部字体
    QString styleSheet = "QWidget { font-family: '" + Alibaba PuHuiTi + "'; }";
    qApp->setStyleSheet(styleSheet);
    
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值