Qt添加自定义字体

前言

Qt中加入字体是一个很常见的需求,实现方法也不唯一,笔者记录下常用的几种方法

一、导入字体的常见需求

1.为显示中文

一些特别的平台发布时,平台本身是没有安装中文字体的,此时只想导入一种中文字体,以显示中文。

如android、WebAssembly、linux系统,经常会缺少中文字体

2.为显示特殊符号

在某些条件受限时,经常无UI设计的图标,此时可以使用图标字体。很多工具或平台都支持,将已有的图标导入到字体文件中,使用时和字体相同,只是显示的是图标,如Fontello - icon fonts generator

3.其他

其他情况就不解释了,大部分是功能上的需求。

二、常见使用方法

1.从C++中导入

Qt中有现成的导入函数:QFontDatabase::addApplicationFont()

只要把字体文件导入就可以了

QFontDatabase::addApplicationFont(QStringLiteral(":/font/HarmonyOS_Sans_SC_Black.ttf"));

 导入后,可以在需要用到的地方,直接将QFont的family属性设置成对应名字就可以。

若是需要设置为默认字体,可以在main()函数中,添加如下代码

int fontId = QFontDatabase::addApplicationFont(QStringLiteral(":/font/HarmonyOS_Sans_SC_Black.ttf"));
QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId);
qDebug()<<"fontfamilies:"<<fontFamilies;
if (fontFamilies.size() > 0)
{
    QFont font;
    font.setFamily(fontFamilies[0]);//设置全局字体
    app.setFont(font);
}

2.从qml中导入

qml提供了FontLoader类型,用于处理字体导入,只需将字体文件的位置赋给source属性就可以了。使用也很简单,FontLoader类型提供了font和name属性,在需要用到的地方,直接使用就可以。

FontLoader {
    id: fontLoader
    source: "file:fonts/HarmonyOS_Sans_SC_Black.ttf"
}

注:字体文件来源、大小 路径

三、注意事项

1.字体文件可放在资源文件中,也可以在绝对路径或相对路径。

笔者建议,若是桌面程序,字体文件在应用程序打包时放入,使用绝对路径;若是移动或web程序,建议放入资源文件中

2.不少字体文件有版权限制,商用时要注意下

3.不建议直接使用相对路径中的“.”,若是通过快捷方式启动的程序,“.”是快捷方式所在目录,不是应用程序的实际目录

4.若有必要,可以对指定字体进行裁剪,以减少字体大小。若字体确实很大,使用qmake可以在.pro文件中添加

CONFIG += resources_big

后记

以上只是笔者记忆里的东西,若有缺少,后补充吧。

### 如何在 Qt Creator 中配置自定义字体 #### 设置 IDE 的字体、颜色和主题样式 对于希望调整Qt Creator界面样式的开发者来说,可以通过更改IDE的字体、颜色以及应用不同的主题样式来实现个性化需求。这些设置可以在`工具->选项->环境`菜单下找到,在这里可以指定编辑器和其他组件所使用的字体大小及风格[^2]。 #### 导入并使用自定义字体于项目之中 当目标是在实际构建的应用程序内运用特定字体时,则需按照一定步骤操作以确保该字体能被正确加载: 1. 将所需ttf格式或其他兼容类型的字体文件放置到项目的资源目录里; 2. 更新`.qrc`资源文件使之包含新加入的字体路径; 3. 使用QFontDatabase API注册此字体以便后续调用; ```cpp #include <QApplication> #include <QFile> #include <QFontDatabase> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 加载字体 int id = QFontDatabase::addApplicationFont(":/path/to/custom_font.ttf"); QStringList families = QFontDatabase::applicationFontFamilies(id); if (!families.isEmpty()) { QString family = families.first(); // 应用字体至整个应用程序 QFont font(family); app.setFont(font); } MainWindow w; w.show(); return app.exec(); } ``` 上述代码展示了如何通过编程方式向Qt应用程序添加新的字体,并将其设为默认显示字体[^4]。 #### 修改启动参数定制外观表现 另外一种方法是利用命令行参数来自定义Qt Creator运行期间的表现形式,比如解决高DPI屏幕下的文字过小问题或是施加额外的设计表单。这通常涉及到创建一个CSS文件用来描述所需的视觉变化,并告知可执行文件去读取它作为附加样式表[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁白杨树下꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值