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; }
外部字体文件:
使用方式: QFont font = ui->label->font(); QString family = Utils::instance()->loadFontFamilyFromFiles( QApplication::applicationDirPath() + "/res/font/HKHBTW12.ttf"); font.setFamily(family); ui->label->setFont(font);//设置控件自定义字体
效果: