QT中main函数中加载外部字体:OTF

QT中main函数中加载外部字体:OTF

我们开发的程序中,如果想使用外部下载的开源字体,同时保证在软件发布时,程序字体能保证和开发者环境下一致,且不想通过安装字体方式实现字体跟随软件时,我们需要在代码中加载外部字体。
Qt 中main函数加载外部字体流程如下:

  1. 将下载好的OTF字体库放到资源文件中,可以使用Qt的资源编辑器添加字体文件,将字体文件放置到项目的资源文件夹中
  2. 在main函数中,可以使用QFontDatabase类来加载字体文件。在加载之前,需要先检查字体是否已经被加载过,如果已经加载过,则无需再次加载。代码如下:
#include 
#include 
#include 

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

    // 加载字体文件
    QFontDatabase fontDB;
    QString fontPath = "qrc:/font/sourceCN.otf";
    int fontId = fontDB.addApplicationFont(fontPath);

    // 检查字体是否已经被加载
    if (fontId != -1) 
    {
    	//获取导入的字体文件中,有几种字体样式,比如字体文件中存在粗体和普通字体样式,需要逐一设置
        QStringList fontFamilies = fontDB.applicationFontFamilies(fontId);
        foreach (QString fontFamily, fontFamilies) 
        {
            // 设置字体
            QFont font(fontFamily);
            a.setFont(font);
        }
    } 
    else 
    {
        qDebug() << "Load font failed";
    }
    // TODO...其他业务代码

    return a.exec();
}


  1. 上述代码中使用了QFontDatabase类的applicationFontFamilies函数来获取字体的名称,返回值为一个QStringList类型的列表,其中包含了字体文件中所有字体的名称。然后使用foreach循环遍历列表中的所有字体名称,并使用QFont类来设置每个字体。

  2. 在使用QFontDatabase类加载字体文件时,需要注意字体文件的路径。在上述代码中,qrc:/font/sourceCN.otf为资源文件中字体文件

综上所述,可以通过在main函数中使用QFontDatabase类来加载包含多个字体的OTF字体文件,并使用QFont类来设置字体。需要使用QStringList类来获取字体名称,并使用foreach循环遍历列表中的所有字体名称。

你可能感兴趣的:(qt,开发语言)