我们在做软件的过程中,经常遇到字体版权问题,或者只是单纯了的为了好看,会加载不同的字体应用到我们自己的程序中,Qt中提供了类QFontDatabase来实现这个功能。
该类能够实现自定义字体、字体切换等多种功能,今天我们介绍下怎么给软件使用自定义字体。
自定义字体之前,我们需要先准备好自定义的字体文件,免费开源的字体有很多,这个在网上能够找到很多。我们主要看下Qt中的代码实现。
bool onLoadFont(const Qstring& strPath)
{
QFile dFontFile(strPath);
if(!dFontFile.open(QIODevice::ReadOnly))
{
//说明打开字体文件失败了
return false;
}
int nFontId = QFontDatabase::addApplicationFontFromData(dFontFile.readAll());
if(nFontId == -1)
{
//说明加载字体文件失败了,该字体不可用
return false;
}
QStringList lFontFamily = QFontDatabase::applicationFontFamilies(nFontId);
if(lFontFamily.empty())
{
//说明从字体中获取字体簇失败了
return false;
}
QFont font(lFontFamily.at(0));
qApp->setFont(font);
return true;
}
如上,我们已经实现了给自己的软件设置整体的自定义字体,同理,我们通过
pWidget->setFont(font);
也可以给指定的QWidget设置字体。
调用方式比较简单,在需要设置字体的地方使用
onLoadFont(CONFIGPATH + "/xxxx.ttf");
就能够给我们的软件设置自定义字体。