目录

1.QFontDatabase概述

2.获取系统所有字体族信息

3.给应用程序添加可使用的字体

4.卸载添加的字体

5.判断指定字体是否具有某种属性或特征

6.获取支持中文抒写系统的字体

7.其它常用API


1.QFontDatabase概述

QFontDatabase类提供了关于底层窗口系统中可用字体的信息。

这个类最常见的用途是查询数据库中每个字体族families()的列表和pointSizes()和styles()。pointSizes()的另一个替代方法是smoothSizes(),它返回指定字体和风格的sizes。

如果字体族可以从两个或更多的制造商,制造商名称包括在字体族名称中;例如:“Helvetica [Adobe]”和“Helvetica [Cronyx]”。当你指定一个字体族,你可以使用旧的连接字符“foundry-family”格式或括起来的“family [foundry]”格式;例如:“Cronyx-Helvetica”或“Helvetica [Cronyx]”。如果字体族有制造商,它总是使用括起来的格式返回,就像families()返回的值一样。

font()函数返回给定字体族、样式和点大小的QFont。

字体族和样式的组合,可以被检测它是斜体还是粗体,并检索它的粗细。类似地,我们可以调用isBitmapScalable(), isSmoothlyScalable(), isScalable()和isFixedPitch()。

使用styleString()获取样式的文本版本。

QFontDatabase类也支持一些静态函数,例如standardSizes()。您可以使用writingSystemName()检索书写系统的描述,并使用writingSystemSample()检索书写系统中的字符样本。

2.获取系统所有字体族信息

下面这个示例演示了如何获取字体族列表、每个字体族的样式列表以及每个字体族和样式组合可用的点大小。

QFontDatabase database;
foreach (const QString &strFamily, database.families()) {qDebug()<<strFamily.toStdString().c_str();foreach (const QString &strStyle, database.styles(strFamily)) {QString strSizes;foreach (int points, database.smoothSizes(strFamily, strStyle))strSizes += QString::number(points) + " ";qDebug()<<"\t"<<strStyle.toStdString().c_str()<<"\t"<<strSizes.toStdString().c_str();}
}

由于系统字体族太多,这里只展示一下部分输出结果:
Arial
     Normal      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Bold      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Italic      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Bold Italic      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
Roman
     Normal      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Bold      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Italic      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Bold Italic      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
宋体
     Normal      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Bold      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Italic      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Bold Italic      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
微软雅黑
     Normal      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Bold      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Italic      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72 
     Bold Italic      6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72

3.给应用程序添加可使用的字体

[static] int QFontDatabase::addApplicationFont(const QString &fileName)
从fileName指定的文件中加载字体,并使其对应用程序可用。返回一个ID,可以用removeApplicationFont()再次删除字体,或者检索字体中包含的姓氏列表。
如果字体无法加载,则函数返回-1。

[static] int QFontDatabase::addApplicationFontFromData(const QByteArray &fontData)
从fontData指定的二进制数据中加载字体,并使其对应用程序可用。返回一个ID,可以用removeApplicationFont()再次删除字体,或者检索字体中包含的姓氏列表。
如果字体无法加载,则函数返回-1。

[static] QStringList QFontDatabase::applicationFontFamilies(int id)
返回由id标识的给定应用程序字体的字体族列表。

4.卸载添加的字体

[static] bool QFontDatabase::removeAllApplicationFonts()
删除之前使用addApplicationFont()和addApplicationFontFromData()添加的所有应用程序本地字体。
如果卸载字体成功,则返回true;否则返回false。

[static] bool QFontDatabase::removeApplicationFont(int id)
删除先前加载的以id标识的应用程序字体。如果成功卸载字体,则返回true;否则返回false。

5.判断指定字体是否具有某种属性或特征

bool QFontDatabase::bold(const QString &family, const QString &style) const
如果具有名为family和且样式为style的字体是粗体,则返回true;否则返回false。

bool QFontDatabase::italic(const QString &family, const QString &style) const
如果具有名为family和且样式为style的字体是斜体,则返回true;否则返回false。

6.获取支持中文抒写系统的字体

QStringList QFontDatabase::families(WritingSystem writingSystem = Any) const
返回支持writingSystem的可用字体族的排序列表。
如果一个家族存在于几个铸造厂中,该字体的返回名称为“family [foundry]”。例如:“Times [Adobe]”,“Times [Cronyx]”,“Palatino”。

    QFontDatabase database;QStringList strList = database.families(QFontDatabase::SimplifiedChinese);for each (QString var in strList){qDebug() << var;}

执行结果:

"Fixedsys"
"Malgun Gothic Semilight"
"Microsoft YaHei UI"
"Microsoft YaHei UI Light"
"SimSun-ExtB"
"System"
"Terminal"
"仿宋"
"华文中宋"
"华文仿宋"
"华文宋体"
"华文彩云"
"华文新魏"
"华文楷体"
"华文琥珀"
"华文细黑"
"华文行楷"
"华文隶书"
"宋体"
"幼圆"
"微软雅黑"
"微软雅黑 Light"
"微软雅黑 Light"
"新宋体"
"方正兰亭超细黑简体"
"方正姚体"
"方正粗黑宋简体"
"方正舒体"
"楷体"
"等线"
"等线 Light"
"等线 Light"
"隶书"
"黑体"

7.其它常用API

QString QFontDatabase::styleString(const QFont &font)
返回描述字体样式的字符串。例如"Bold Italic", "Bold", "Italic" or "Normal"。可以返回空字符串。

QString QFontDatabase::styleString(const QFontInfo &fontInfo)
返回一个描述fontInfo样式的字符串。例如"Bold Italic", "Bold", "Italic" or "Normal"。可以返回空字符串。

QStringList QFontDatabase::styles(const QString &family) const
返回字体族可用样式的列表。一些例子样式:"Light", "Light Italic", "Bold", "Oblique", "Demi"。列表可以是空的。

[static] QFont QFontDatabase::systemFont(SystemFont type)
为与系统外观进行适当集成,返回给定类型大小写的最适当字体。

[static] QString QFontDatabase::writingSystemName(WritingSystem writingSystem)
返回writingSystem的名称(例如在对话框中显示给用户)。

[static] QString QFontDatabase::writingSystemSample(WritingSystem writingSystem)
从writingSystem返回一个带有示例字符的字符串。

QList<WritingSystem> QFontDatabase::writingSystems() const
返回可用书写系统的排序列表。这是根据系统上安装的所有字体的信息生成的列表。

QList<WritingSystem> QFontDatabase::writingSystems(const QString &family) const
返回给定字体族支持的书写系统的排序列表。

看一遍就能玩转QT字体类(2)-QFontDatabase相关推荐

  1. 可以让男人看一遍哭一遍的文章(转贴)

    可以让男人看一遍哭一遍的文章(转贴) 如果有一天将要离开这个世界,我希望最后的归宿是在你的怀里.即使喝下奈何桥边那碗 遗忘前世的孟婆汤,来生,我依然能够带着对你怀抱的记忆去找到你. --题记 一 在新 ...

  2. 爸爸!再不陪我,我就长大了!推荐每个爸爸都看一遍!

    http://mp.weixin.qq.com/s?__biz=MjM5ODQ2MTE2Mw==&mid=200272738&idx=7&sn=d18690ef0f63b16b ...

  3. 《加班狗是怎样炼成的?》卧槽!连看三遍有木有!

    转载来至:http://www.yixieshi.com/zhichang/20993.html <加班狗是怎样炼成的?>卧槽!连看三遍有木有! 时间:2015-04-18 13:25 来 ...

  4. 我爱我妻 让你看一遍哭一遍 - 转载

    转自:http://club.chinaren.com/70524675.html 我爱我妻 让你看一遍哭一遍 如果有一天将要离开这个世界,我希望最后的归宿是在你的怀里.即使喝下奈何桥边那碗遗忘前世的 ...

  5. 吴恩达教你如何读论文:绘制进度表格,论文至少看三遍,还要问自己问题

    来源:量子位 本文约1478字,建议阅读4分钟. 本文介绍如何研究一篇论文. 吴恩达教你如何读论文,高效了解新领域. 就算是博士,也很难对所有的关键技术都参透了解.那么如何有效了解一个新领域,是研究者 ...

  6. 互联网时代下,看租赁电商如何玩转消费金融

    文章讲的是互联网时代下,看租赁电商如何玩转消费金融,随着共享单车受到市场的火爆追捧,共享经济概念开始深入人心.目前来说,共享经济本质都是以租赁的形式呈现.小规模的时候,看着更像一个服务公司,但是规模一 ...

  7. 手工制作机器人用彩泥_印度神奇芒果干制作过程,看一遍顶三遍,游客:不会再吃了...

    印度神奇芒果干制作过程,看一遍顶三遍,游客:不会再吃了 随着我国经济迅速发展,人们生活水平得到了很大提升,物质消费得到满足以后,人们更注重精神需求,希望通过旅游要开放视野,放松心情,让自己体验不同地域 ...

  8. 不做标题党,7种技巧写出好标题,90%的人看三遍就会了。

    不做标题党,7种技巧写出好标题,99%的人看三遍就会了. 那么什么样的标题算是好的标题呢? 标题和内容都要秉持这三点来打造,有情.有趣.有用. 有情:你的标题能够让读者产生强烈的共鸣,提供情绪价值或者 ...

  9. 转载:看一遍就理解,图解单链表反转

    转载:看一遍就理解,图解单链表反转 看一遍就理解,图解单链表反转 前言 反转链表是程序员必备的基本素养,经常在面试.笔试的过程中出现.一直觉得反转链表实现代码不是很好理解,决定搬leetcode那道经 ...

最新文章

  1. Python_note1
  2. shufflenet-centernet
  3. sort(()={return Math.random()-0.5)}乱序数组不准确
  4. 僵尸进程的产生,危害和解决方案
  5. 信息学奥赛一本通(1087:级数求和)
  6. 一个自用的好看幻灯片代码
  7. 手把手教你在友善之臂tiny4412上用uboot启动Linux内核
  8. 为了解决架构的问题,我们需要先理解敏捷的真谛
  9. 五颜六色 CSS颜色代码表
  10. 如何对CAD中的曲线进行测量?
  11. rpm包的卸载与安装
  12. JavaScript封装回调函数(委托)
  13. VMware虚拟机安装ubuntu后无法复制文件的解决办法
  14. DayDayUp:平均每篇文章1毛! 本博主自2020年6月1日起,如有任何问题可在博客贴吧留言或者私信博主(包括并不限于GUI软件编写、安装及编程语言中的bug、AI算法设计等),非诚勿扰!
  15. ACM入门知识-----ACM赛事介绍
  16. 众享比特 2018 LC3大会分享:如何基于Fabric实现供应链金融平台系统?
  17. PXC+haproxy+keepalived环境搭建
  18. 将数字编号翻译为英文编号(python)实现
  19. python封装mel命令
  20. [C语言]程序改错题。爱因斯坦曾出过这样的一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶...

热门文章

  1. .Net打包发布网站
  2. 从键盘输入10个整数,检查整数5是否包含在这些数据中,若是的话,找出它是第几个被输入的。
  3. 【微信小程序】搜索框样式
  4. [FS 社区资料]40GBASE-LR4 QSFP+光模块适用的两种链路:CWDM和PSM
  5. 误删也能找!清空回收站后文件找回技巧
  6. [附源码]计算机毕业设计JAVA高要某高校教务处排课系统
  7. Telerik DevCraft UI,提供 .NET 和 JavaScript 技术
  8. CMD指令大全《花钱值得收藏》(100个指令)
  9. 实现蓝牙模块与手机进行通讯
  10. Mac os 10.15 不可恢复的错误 SecurityAgent无法创建所要求的机制