首页 > 其他分享 >Qt 设置全局字体

Qt 设置全局字体

时间:2024-05-31 18:55:08浏览次数:23  
标签:控件 Qt 创建 字体 设置 全局 加载

在Qt中设置全局字体通常涉及两个步骤:

  • 首先加载所需的字体
  • 然后将其应用为应用程序范围内的默认字体。

这可以通过在应用程序初始化时设置 QApplication 的字体属性来实现。

以下是一个示例代码,展示了如何设置全局字体:

 1 #include <QApplication>  
 2 #include <QFont>  
 3 #include <QFontDatabase>  
 4   
 5 int main(int argc, char *argv[])  
 6 {  
 7     QApplication app(argc, argv);  
 8   
 9     // 加载字体文件  
10     // 假设字体文件位于可执行文件的同一目录下,或者已经被添加到了资源文件中  
11     // 如果是从文件系统中加载,使用类似 "D:/path/to/your/font.ttf" 的路径  
12     // 如果是从资源文件中加载,使用类似 ":/fonts/yourfont.ttf" 的路径  
13     int fontId = QFontDatabase::addApplicationFont(":/fonts/yourfont.ttf");  
14   
15     // 检查字体是否成功加载  
16     if (fontId != -1) {  
17         // 获取新加载的字体的家族名称列表  
18         QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId);  
19   
20         // 假设我们只加载了一个字体,或者只关心第一个字体家族  
21         if (!fontFamilies.isEmpty()) {  
22             QString familyName = fontFamilies.first();  
23   
24             // 创建字体对象并设置属性  
25             QFont font(familyName);  
26             font.setPointSize(10); // 设置字体大小  
27   
28             // 设置应用程序的全局字体  
29             app.setFont(font);  
30   
31             // 现在,所有新创建的窗口和控件都将默认使用这个字体,  
32             // 除非在创建时明确指定了其他字体。  
33         }  
34     }  
35   
36     // ... 创建和显示主窗口等  
37   
38     return app.exec();  
39 }

  在这个例子中,我们首先使用 QFontDatabase::addApplicationFont() 方法加载字体文件。然后,我们检查字体是否成功加载,并获取加载的字体的家族名称。接下来,我们创建一个 QFont 对象,并设置所需的属性,如字体大小和样式。最后,我们使用 QApplication::setFont() 方法将这个字体设置为应用程序的全局字体。

  请注意,这个设置只会影响之后创建的窗口和控件。如果在设置全局字体之前已经创建了窗口或控件,你需要单独为它们设置字体。此外,一些控件可能有自己的默认字体设置,这些设置可能会覆盖全局字体设置。在这种情况下,你需要在创建这些控件时明确指定所需的字体。


标签:控件,Qt,创建,字体,设置,全局,加载
From: https://www.cnblogs.com/ybqjymy/p/18225140

相关文章

  • Qt 获取程序编译时间
    在程序开发过程中,有时我们需要获取程序的编译时间,来追溯不同/相同版本不同时间编译程序的问题。代码实现如下:1#include<QDebug>2#include<QDate>3#include<QTime>45constvoidgetBuildTime()6{7staticconstQDatebuildDate=QLocale(QLocale::E......
  • Qt 设置软件的版本信息:QMake、CMake工程
    Qt设置软件的版本等信息对于Qt开发的软件,我们如何去方便的查看其软件的版本信息。这里提供了几种方式。在运行程序期间设置版本信息大部分的程序在运行之后都会提供一个关于的按钮,通过点击该按钮并弹出一个关于界面,则可以查看相关的程序信息。此关于界面为用户自定义的......
  • cmake构建Qt插件
    cmake构建Qt插件为什么要使用插件在进行大型客户端项目的开发时,往往需要分成很多的功能模块,这是架构在设计时候就必须考虑的,良好的架构应该易于扩展,使用动态库就可以很好的实现,但是动态库使用中会使用到具体的定义,高层模块反而依赖于底层模块的实现,这是不符合设计模式中依赖反转......
  • 【Java代码调用华为云IoT MQTT】
    目录欢迎关注微信公众号:数据科学与艺术作者WX:superhe199下面是使用Java代码调用华为云IoTMQTT:importorg.eclipse.paho.client.mqttv3.*;importorg.eclipse.paho.client.mqttv3.persist.MemoryPersistence;publicclassHuaweiCloudMqttExample{publi......
  • Avalonia 0.10.x中字体的问题
    Avalonia0.10.x的版本,会有字体的问题。经常会因为字体的缘故应用崩溃。可以试着把字体设置成下面的字体类型Linux:DejaVuSansMacOS:RobotoWindows:SimSunWindows系统相对问题会较少,一般微软雅黑或宋体都不会有问题。获取字体列表的功能,貌似只有Windows下的是有效的。......
  • Ubuntu上使用QT creator运行cuda程序
    突发奇想想尝试一下QT界面中使用CUDA加速过的程序,然后查了一下资料,总结一下有以下几点吧1、CUDA配置全部放在.pro文件中2、main.cpp为主函数使用g++编译3、kernel.cu为核函数使用nvcc编译不多说上代码以下为main.cpp代码   #include<QtCore/QCoreApplication>       ......
  • QT实现对文件名进行排序
    QStringListQDir::entryList(QDir::Filtersfilters=NoFilter,QDir::SortFlagssort=NoSort)const,该成员函数实现根据路径获取该文件夹下文件,其中QDir::SortFlags是一个枚举类型,各个常量参照QT的官方文档:QDirfiledir(dir_path);QStringListfilenames=filedir.entryL......
  • springboot基本使用十一(自定义全局异常处理器)
    例如:我们都知道在java中被除数不能为0,为0就会报byzero错误@RestControllerpublicclassTestController{@GetMapping("/ex")publicIntegerex(){inta=10/0;returna;}}打印结果:如何将这个异常进行处理?创建全局异常处理类......
  • 深入探索Qt框架系列之信号槽原理(三)
    前面两篇分别介绍了QObject::connect和QMetaObject::Connection,那么信号槽机制的基础已经介绍完了,本文将介绍信号槽机制是如何从信号到槽的,以及多线程下是如何工作的。信号槽机制源码解析1.信号的触发以该系列的第一篇文章中的示例举例:test_moc.h:classtest_moc:p......
  • Qt使用qBreakpad定位崩溃位置(2)
    软件调试Qt使用qBreakpad定位崩溃位置(2)目录软件调试Qt使用qBreakpad定位崩溃位置(2)前言1、Google-Breakpad2、qBreakpad3、crashpad4、注意Linux下1、环境2、qBreakpad源码准备3、qBreakpad编译4、测试qBreakpad5、dump文件调试5.1编译breakpad5.2开始分析dmp文件Windows下1......