Qt添加第三方字体

最近开发项目时,据说不能用系统自带的微软雅黑字体,于是找一个开源的字体,思源黑体,这个是google和Adobe公司合力开发的可以免费使用。本篇记录一下Qt使用第三方字体的方式。字体从下载之家下载http://www.downza.cn/soft/266042.html。下载解压后有8种字体

代码实现

cpp 复制代码
#include "mainwindow.h"
#include <QFont>
#include <QFontDatabase>
#include <QApplication>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QString path = QCoreApplication::applicationDirPath();
    int fontIndex = 0;
    switch (fontIndex) {
    case 0:
        path = path + QString("/font/SourceHanSans-Bold.otf");
        break;
    case 1:
        path = path + QString("/font/SourceHanSans-CNBold.ttf");
        break;
    case 2:
        path = path + QString("/font/SourceHanSans-ExtraLight.otf");
        break;
    case 3:
        path = path + QString("/font/SourceHanSans-Heavy.otf");
        break;
    case 4:
        path = path + QString("/font/SourceHanSans-Light.otf");
        break;
    case 5:
        path = path + QString("/font/SourceHanSans-Medium.otf");
        break;
    case 6:
        path = path + QString("/font/SourceHanSans-Normal.ttf");
        break;
    case 7:
        path = path + QString("/font/SourceHanSans-Regular.ttf");
        break;
    default:
        path = path + QString("/font/SourceHanSans-CNBold.ttf");
        break;
    }

    int fontId = QFontDatabase::addApplicationFont(path);
    QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId);

    if (!fontFamilies.empty())
    {
        QString fontFamily = fontFamilies.at(0);
        QFont defaultFont = a.font();
        defaultFont.setFamily(fontFamily);
        defaultFont.setPixelSize(15);
        a.setFont(defaultFont);
    }

    MainWindow w;
    w.show();
    return a.exec();
}

运行效果:

第2种字体效果:

第3种字体效果:

第4种字体效果:

第5种字体效果:

第6种字体效果:

第7种字体效果:

第8种字体效果:

相关推荐
扶尔魔ocy2 小时前
【qt openGL入门笔记】windows编译MinGW版本的osgearth(2.10.1)
qt·opengl·osg
小王C语言6 小时前
Qt常用控件:按钮类控件,普通按键、单选、复选
开发语言·qt
初阳78516 小时前
【基于Qt5仿音乐播放器(六)】——细节打磨与总结
qt·1024程序员节
小鱼仙官1 天前
使用Qt封装C/C++ 动态库 用于第三方调用
c语言·c++·qt
扶尔魔ocy1 天前
【QT OpenGL】知识点编目及传送门
qt·opengl·osg
qq_401700411 天前
Qt Modbus 源码剖析:从 QModbusClient 到工业级通信框架
开发语言·qt·系统架构
GreenHandBruce1 天前
基于Qt 6.12.0 + FFmpeg 9.0.2的4k视频播放器
qt·ffmpeg·音视频
誰能久伴不乏1 天前
桌面客户端的运行日志系统:SQLite 分块 + 独立写线程 + 文本降级
数据库·c++·qt·架构·sqlite
沫璃染墨2 天前
《Qt从零入门系列(十五):Qt线程安全与锁机制详解——从QMutex到RAII与读写锁实战》
开发语言·c++·qt·安全·交互·线程·qt6.3
小豆庄2 天前
视频脱敏引擎的追踪难题:转场误判定、ID撞号和淡入窗口
qt·算法·目标检测·音视频·视频·敏捷流程