最近换了项目里的字体,所以整理一下qt设置字体相关的一点内容,
主要包括:
1、查看当前系统里所有字体的名称
2、添加路径下的字体库
3、使用字体库

一、查看当前Qt所有字体的名称

为什么要查看字体名称呢? 因为设置字体的时候,setFamily()的参数时是字体名称,所以我们要先知道字体的名称,然后才能通过setFamily()去使用该字体。
1、qt C++下查看
使用 QFontDatabase 的families(),返回值是一个QStringList类型,里面包含所有字体的名称;
打印字体名称的代码如下;
若想看字体显示效果,可以做个界面,然后用QFont的setFamily(QString fontName)把text的设置为该字体看效果;

#include <QDebug>
#include <QFontDatabase>QFontDatabase fdb;QStringList fontList = fdb.families();for(int i = 0; i < fontList.size(); i++){qDebug() << "font name" << i << ": " << fontList.at(i);}

2、qml下查看
qml里的 Qt.fontFamilies()和上面QFontDatabase::families()一样,都是返回一个字体名称的QStringList,刚好可以用来做ListView的模型,所以我们把字体显示出来看效果,代码和效果图下。

Item {width: 960; height: 540ListView{anchors.fill: parentmodel: Qt.fontFamilies()delegate: Item {height: 64width: parent.widthRectangle{height: 48width: parent.widthText {id: txtShowanchors.centerIn: parentcolor: "black"text: "字体名称" + index + ": " + modelDatafont.family: modelData}}}}}

二、路径下添加字体库

若不满意上面的字体,怎么办呢?那就得自己找字体库,一般是ttf格式,
1、把字体库放到qt的安装目录下的lib/fonts文件夹中,再通过第一步找到该字体名称,使用该字体。
2、但是如果我为了方便打包和管理,想把字体库放在项目文件夹里,该怎么办呢?
假设字体库文件名是song.ttf,绝对路径是 /work/tftpboot ,下面一行代码就能把该字体加入Qt字体中来,接着通过第一步找到该字体的名称,就能使用它了。 帮助文档里说这函数成功会返回一个id失败返回-1,但我试了只是成功返回0,失败返回-1,0并不是这个字体的id。

QFontDatabase::addApplicationFont("/work/tftpboot/song.ttf");

三、使用字体库

名称找到,那就该用起来了
1、全局使用 main.cpp:

QApplication app(num, param);
QFont font;
font.setFamily("DejaVu Sans Mono");
app.setFont(font);

2、qml里

Text {text: "字体名称"font.family: "DejaVu Sans Mono"
}

除了通过名称,还可以通过字体的id来使用,但因为addApplicationFont()这个函数不知道咋整,所以也不知道怎么整比较好。

Qt Qml 查看所有字体、添加字体库、使用字体库的方法相关推荐

  1. Qt QML 菜单/目录/工具栏的全面攻略(TabBar、MenuBar、ToolBar、Button定制、Listview、Repeater)

    Qt QML 菜单/目录/工具栏的全面攻略 1. TabBar的工具栏/目录 1.1 演示 1.2 关键控件 1.3 源码 2 MenuBar 菜单 2.1 演示 2.2 关键控件 2.3 源码 3 ...

  2. QML学习系列-Qt QML是什么?

    Qt QML是一个用于创建用户界面(UI)和应用程序逻辑的声明性语言.它是Qt框架的一部分,用于开发跨平台的应用程序,可运行于Windows.MacOS.Linux.Android.iOS等平台上. ...

  3. Linux下添加华文行楷字体(QT可用)

    linux:   1.将字体文件放入ky 3.2Linux 系统字体目录   cp STXINGKA.TTF /usr/share/fonts/chinese/TrueType. 如果没有该目录,创建 ...

  4. cenetos 查看字体库_iFonts字体管理软件,支持win/mac,还有海量免费字库

    iFonts字体管理软件,支持win/mac,还有海量免费字库 七月 1, 2020 发表于: 设计工具. 评论 (2) Sponsor 字体管理软件:iFonts 是设计导航小编最近才发现的新工具, ...

  5. creator qt 字体太小_qt ttf 字体太小的解决方法

    编译完成qt以后,发现qt的字体太小了 原因是qt的dpi计算错误,这样的情况会导致qt在不同的平台上大小不一 解决的方法就是设置好qt的dpi, qt是根据显示器的物理长度或者宽度于分辨率的关系来计 ...

  6. 如何添加centos7系统的字体及编码格式?

    第一步:(本文档以添加中文字体并且把utf-8修改为GBK为例,注:以下操作以root权限执行) 1:查看当前系统所有可用的locale locale -a zh_CN.utf8 zh:表示中文 CN ...

  7. CentOS 7 安装字体库 中文字体

    前言 报表中发现有中文乱码和中文字体不整齐(重叠)的情况,首先考虑的就是操作系统是否有中文字体,在CentOS 7中发现输入命令查看字体列表是提示命令无效:    如上图可以看出,不仅没有中文字体,连 ...

  8. Linux 安装字体库 中文字体

    Linux 安装字体库 & 中文字体 发现有中文乱码和中文字体不整齐(重叠)的情况,首先考虑的就是操作系统是否有中文字体,在CentOS 7中发现输入命令查看字体列表是提示命令无效: 如上图可 ...

  9. LVGL学习之路——基于lv_lib_freetype库的TTF字体文件动态加载中文字体(阿里普惠字体)

    前言   在学习lvgl中,在英文字体上很多人都用过,但是中文字体往往需要靠取模去实现.那么我就在想,如何像windows那样加载动态的字体呢,这样想做多大字体都行.于是就开始了字体的移植. 什么是t ...

最新文章

  1. lucene集成IK实现中文分词检索
  2. c语言中#39;xd#39;代表什么,关于C语言宏定义的技巧:#39;##39;和#39;###39;
  3. python下载文件到本地-Python下载网络文本数据到本地内存的四种实现方法示例
  4. 面向对象--第三部分
  5. mysql 二进制安装卸载_MySQL二进制版本的安装及卸载
  6. sublime安装Codecs33
  7. Hadoop-Flume-类比吸尘器图解
  8. 面向对象:实例化的对象调用类方法 db.Column()
  9. R实例:根据经纬度坐标批量返回行政区域信息
  10. STM32之AHB与APB总线
  11. CheckBox jsp+javaScript多项选择checkbox取值实现
  12. yaml和properties文件相互转换的网站
  13. jquery文档modal_jQuery代码文档小工具
  14. 模电试题_数电试题 综合测试
  15. 开发交接文档_为开发人员创造更好的设计交接体验
  16. sqlite转sql2000数据库
  17. HTML5创意设计简历,35张设计师的创意个人简历信息图
  18. 肠道微生物组如何影响运动能力,所谓的“精英肠道微生物组”真的存在吗?
  19. [常用工具] 搜索引擎的常用技巧总结
  20. 我是如何从通信转到Java软件开发工程师的?

热门文章

  1. Matplotlib——绘制多个子图(Axes)及其布局
  2. 驭势科技携手奇辉机器人,联合发布面向多行业的智慧物流整体解决方案
  3. CycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
  4. Knowledge Distillation: A Survey
  5. NUIST第三届程序设计团体赛试题
  6. 搭建VLC流媒体服务
  7. 不要让未来的你,讨厌现在的自己
  8. [统计学笔记] (七) 假设检验
  9. 跟李沐学AI--权重衰退
  10. SpringMVC学习系列(6) 之 数据验证