QT加载外部特定字体方法详解

输入字体文件路径,输出字体family:
QString loadFontFamilyFromFiles(const QString &fontFileName)
{
    static QHash<QString, QString> tmd;
    if (tmd.contains(fontFileName)) {
        return tmd.value(fontFileName);
    }
    QString font = "";
    QFile fontFile(fontFileName);
    if(!fontFile.open(QIODevice::ReadOnly)) {
        qDebug()<<"Open font file error";
        return font;
    }

    int loadedFontID = QFontDatabase::addApplicationFontFromData(fontFile.readAll());
    QStringList loadedFontFamilies = QFontDatabase::applicationFontFamilies(loadedFontID);
    if(!loadedFontFamilies.empty()) {
        font = loadedFontFamilies.at(0);
    }
    fontFile.close();

    if (!(font.isEmpty()))
        tmd.insert(fontFileName, font);
    return font;
}

外部字体文件:

QT加载外部特定字体方法详解

使用方式:
QFont font = ui->label->font();
QString family = Utils::instance()->loadFontFamilyFromFiles(
                QApplication::applicationDirPath() + "/res/font/HKHBTW12.ttf");
font.setFamily(family);
ui->label->setFont(font);//设置控件自定义字体

效果:

QT加载外部特定字体方法详解

QT加载外部特定字体方法详解