目录
- 查看系统支持字体
- 设置默认字体
- Qt5.13新增自定义回退链
- 字体扩展方式1(系统安装)
- [字体扩展方式2 (外部资源)](#字体扩展方式2 (外部资源))
查看系统支持字体
cpp
#include <QFontDatabase>
#include <QDebug>
// 获取所有字体系列
QFontDatabase fontDatabase;
qDebug() << fontDatabase.families();
设置默认字体
cpp
// 设置默认字体
QFont defaultFont = QGuiApplication::font();
qDebug() << "系统默认字体:" << defaultFont.family();
defaultFont.setFamily("宋体");
QGuiApplication::setFont(defaultFont);
Qt5.13新增自定义回退链
当字符在默认字体找不到,qt会如何处理呢?
5.13之前的版本,他会回到系统回退链查找
5.13版本给QFont新增setFamilies自定义回退链,如果自定义回退链找不到才会回到系统回退链
cpp
// 设置默认字体
QFont defaultFont = QGuiApplication::font();
qDebug() << "系统默认字体:" << defaultFont.family();
QStringList families;
families << "Microsoft YaHei" << "PingFang SC" << "Hiragino Sans GB" << "WenQuanYi Micro Hei" << "sans-serif";
defaultFont.setFamily("宋体");
defaultFont.setFamilies(families);
QGuiApplication::setFont(defaultFont);
字体扩展方式1(系统安装)
如果是ubuntu你就将字体安装到, 与此同时启动qt程序
是可以在fontDatabase.families()中找到的
cpp
/usr/share/fonts/ - 这是最主要的系统级字体目录。安装在这里的字体对所有用户可用。
通常,您下载的字体包(如 .ttf, .otf文件)可以放在其子目录中,例如:
/usr/share/fonts/truetype/(用于 TrueType 字体 .ttf)
/usr/share/fonts/opentype/(用于 OpenType 字体 .otf)
您也可以在其中创建新的文件夹来分类管理字体。
字体扩展方式2 (外部资源)
将字体包安装到程序所在指定目录,通过本地路径加载
在families()看到的字体直接使用即可
不建议使用qrc进行加载因为会导致打包文件很大,打包速度很慢
cpp
// 获取所有字体系列
QFontDatabase fontDatabase;
fontDatabase.addApplicationFont("MiSans-Thin.ttf");
qDebug() << fontDatabase.families();
// 设置默认字体
QFont defaultFont = QGuiApplication::font();
qDebug() << "系统默认字体:" << defaultFont.family();
QStringList families;
families << "Microsoft YaHei" << "PingFang SC" << "Hiragino Sans GB" << "WenQuanYi Micro Hei" << "sans-serif";
defaultFont.setFamily("MiSans Thin");
//defaultFont.setFamilies(families);
QGuiApplication::setFont(defaultFont);