之前的做法都是把 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(0); } 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