之前的做法都是把 ttc, ttf 这些文件拷贝到系统字库里去(即拷贝到 lib/fonts 下)。但是,每次添加字体,我都要把产品的文件系统都给升级一遍吗?这样系统的一致性就不大好了。所以想能不能直接把字库绑定到程序里面去。
在一个台湾同胞的博客上看到了下面代码:
使用QFontDatabase::addApplicationFont,可以直接讀取字型 檔(ttc, ttf)。 #include <QFontDatabase>
QString loadFontFromFile(QString path)
{
static QString font;
static bool loaded = false;
if(!loaded)
{
loaded = true;
int loadedFontID = QFontDatabase::addApplicationFont(path);
QStringList loadedFontFamilies = QFontDatabase::applicationFontFamilies(loadedFontID);
if(!loadedFontFamilies.empty())
font = loadedFontFamilies.at();
}
return font;
}
QString fontName = loadFontFromFile(":/font/font2.TTC");
QFont font(fontName);
恩,基本达到了目的。。。其实只需要高亮部分的这几行代码即可,嫌函数费事的,可以直接拷贝出来用。另外,上面 “ loadedFontFamilies.at(0)” 这里,0 是指具体的字体在字库中的位置。想知道要使用的字体在字库中处于什么位置,可以用 qDebug() 输出 loadedFontFamilies 整个 list 来尝试。
原文地址:http://yycking.blogspot.sg/2013/03/qt.html