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);//设置控件自定义字体
效果: