qt 使用非系统字库

之前的做法都是把 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

posted @   Biiigfish  阅读(2876)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示