在Qt开发中,会遇到有些电脑没安装某种或者某一种字体,又不能每台电脑去安装。这时候,我们就要考虑在程序中将外部字体文件当做资源一样加载,保证显示效果一致。

main.cpp

#include "widget.h"
#include <QApplication>#include <QFontDatabase>
#include <QIODevice>
#include <QFile>
#include <QDebug>QString loadFontFamilyFromFiles(const QString &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();return font;
}int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();//指定的字体文件路径和字体文件名QString strFont0 =  loadFontFamilyFromFiles("F:\\github_blogs\\qt\\20190805\\fontDemo\\fonts\\PingFangRegular.ttf");qDebug() << "strFont0 is: " << strFont0;//指定的字体文件路径和字体文件名QString strFont1 =  loadFontFamilyFromFiles("F:\\github_blogs\\qt\\20190805\\fontDemo\\fonts\\PingFangMedium.ttf");qDebug() << "strFont1 is: " << strFont1;//指定的字体文件路径和字体文件名QString strFont2 =  loadFontFamilyFromFiles("F:\\github_blogs\\qt\\20190805\\fontDemo\\fonts\\PingFangBold.ttf");qDebug() << "strFont2 is: " << strFont2;//    if(strFont.isEmpty())
//    {//        qDebug() <<"Error";
//    }
//    else
//    {//        qDebug() << "load font success!";
//    }return a.exec();
}

widget.cpp文件:

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);QFont font0("PingFang SC Regular");font0.setPixelSize(14);ui->label_0->setFont(font0);QFont font1("PingFang SC Medium");font1.setPixelSize(14);ui->label_1->setFont(font1);QFont font2("PingFang SC Bold");font2.setPixelSize(14);ui->label_2->setFont(font2);QFont font3("微软雅黑");font3.setPixelSize(14);ui->label_3->setFont(font3);QFont font4("微软雅黑");font4.setBold(true);font4.setPixelSize(14);ui->label_4->setFont(font4);//    strFont0 is:  "PingFang SC Regular"
//    strFont0 is:  "PingFang SC Medium"
//    strFont0 is:  "PingFang SC Bold"//    ui->label_0->setFont(font);
}Widget::~Widget()
{delete ui;
}

工程文件:


该demo的github地址是:https://github.com/xiaozia/blogs/tree/master/qt/20190805/fontDemo
字体文件地址:https://github.com/xiaozia/blogs/tree/master/qt/20190805/fontDemo/fonts

参考:https://www.2cto.com/kf/201611/567962.html

QT中将外部字体加载到程序中相关推荐

  1. html页面判断其他div为空,将外部html加载到div中 - 页面加载然后变为空白

    我确信这将会变成一件愚蠢的事情,但是自从我成为JavaScript noob以来,这里就变成了一件愚蠢的事情.将外部html加载到div中 - 页面加载然后变为空白 我想外部HTML内容加载到我的索引 ...

  2. SoapUI利用Groovy把外部数据加载到request中

    默认已经用Groovy把外部数据给读取出来了,关键是读取出来后,如何加载到request中去?这里提供了两种方法: 1.该Groovy脚本的名称是"setUp" def num = ...

  3. hive外部表改为内部表_3000字揭秘Greenplum的外部数据加载——外部表

    外部表是greenplum的一种数据表,它与普通表不同的地方是:外部表是用来访问存储在greenplum数据库之外的数据.如普通表一样,可使用SQL对外部表进行查询和插入操作.外部表主要用于Green ...

  4. QT多国语言加载qm文件不起效果问题总结

    请确保qm的文件路径正确,该文件程序一定能找得到. 当有多个qm文件时,后加载的可能会覆盖掉前期加载的,请检查是不是后加载的qm导致多国语言失败. 请检查QTranslator对象在窗口.程序生存期内 ...

  5. Web 性能优化:使用 CSS font-display 控制字体加载和替换

    作者 | 张旭乾       责编 | 欧阳姝黎 出品 | 峰华前端工程师 在编写网站的时候,或多或少都会用到一些网络上的字体,CSS 3 中虽然加入了对 Web Fonts(网络字体)的支持,但是浏 ...

  6. hive内部表和外部表的区别_3000字揭秘Greenplum的外部数据加载——外部表

    外部表是greenplum的一种数据表,它与普通表不同的地方是:外部表是用来访问存储在greenplum数据库之外的数据.如普通表一样,可使用SQL对外部表进行查询和插入操作.外部表主要用于Green ...

  7. 浅析Android字体加载原理

    浅析Android字体加载原理 前言 之前在处理系统字体问题的时候,可借鉴的资料很少,遇到了很多坑,不得不了解Android字体加载原理,现抽空写一篇总结,来加深自己对这块的理解. 内容 概述 And ...

  8. html字体加载规则,CSS-等待字体加载,然后渲染网页

    CSS-等待字体加载,然后渲染网页 我正在使用@ font-face将字体嵌入到我的网站中. 首先,文本将作为系统默认值呈现,然后(假定字体文件已加载)正确的字体将在几分之一秒后呈现. 有没有一种方法 ...

  9. Unity 制作翻书电子书,外部异步加载千张图片(二)

    Unity 制作翻书电子书,外部异步加载千张图片(二) Hello!这是我的第二篇文章,希望在你阅读这篇文章之后对你能有帮助. 上文完成的程序,我说过只是解决了当前的问题,存在了很多瑕疵.例如:1.替 ...

最新文章

  1. 利用FRIDA攻击Android应用程序(三)
  2. 解决ubuntu的chkconfig[/sbin/insserv 无法找到路径问题]
  3. python开发Day05(计算器代码)
  4. Windbg教程-调试非托管程序的基本命令上
  5. C/C++学习之路_九:文件操作
  6. linux 进程通信之 mmap
  7. 12个关键词,告诉你到底什么是机器学习
  8. Win8环境下 IIS6部署MVC网站出现的无法显示此网页错误
  9. MFC制作打地鼠小游戏
  10. 云服务器加密机,如何选择云服务器密码机
  11. python autoitlibrary_AutoItLibrary
  12. Go全栈面试题(3) -微服务面试题
  13. ad10搜索快捷键_AD 常用快捷键
  14. LayaBox---背景拖动
  15. 信息安全专业学习规划
  16. 电气火灾监控系统在地铁供配电系统中的应用
  17. Internal Error occurred while analyzing this expression
  18. 字体 跨域访问_21个访问量最大的免费字体网站
  19. 加拿大政府正式为IT项目管理的成本估计作出规定
  20. 禁欲28天!一宅男居然肝出如此详细Web安全学习笔记,学妹看完直接抽搐了!(第二弹)

热门文章

  1. Pygame实战:程序员小哥给女友写了一款锻炼反应能力的游戏,从此上班摸鱼再也没被扣工资。
  2. 简拼为sz的词语_SZ是什么的缩写?
  3. Python爬虫学习笔记-第六课(正则表达式下+csv模块的使用)
  4. nbcsKong雀是否应该注册另一个流服务
  5. led钨丝灯项目笔记
  6. 太原java培训机构排名,吊打面试官系列!
  7. MotionBuilder与NOKOV度量动捕系统连接教程
  8. Games 图形学 L11
  9. ceph 容器化安装 以及 需要趟过去的坑
  10. ionic popover、popu、scroll