[Qt 教程之Widgets模块] —— QFontComboBox 字体选择器

Qt系列教程总目录

文章目录

        • 3.2.1 创建 QFontComboBox
        • 3.2.2 成员函数
          • 1. 书写系统
          • 2. 字体过滤器
          • 3. 当前字体
          • 4. 信号

该控件用于选择字体,在一些软件中经常有类似控件,如下:

Microsoft Office:

在这里插入图片描述

Photoshop:

在这里插入图片描述

QFontComboBox 继承于 QComboBox ,所以他有 QComboBox 大部分属性与成员,但也有自己特有的。

注意:

这里虽然说是 Font 选择器,实际上每次选择只对 Font 中的 family 进行了修改,不会改变其他字体属性。 但每次选择 QFontComboBox 会返回一个同时包含其他字体属性的 Font 对象,如果直接将该对象设置给文本,那么文本当前其他的字体属性会被覆盖。所以,这里注意做好处理,只将QFontComboBox 返回的 family 属性设置给文本。

3.2.1 创建 QFontComboBox

同样,他也支持通过拖拽控件创建,也可以在自定义代码中创建。

他只有一个构造函数:

QFontComboBox(QWidget *parent = nullptr);
~QFontComboBox();

默认构造函数QFontComboBox()创建一个空的字体选择器。

也可以传入一个QWidget对象指针,QFontComboBox(QWidget *parent),它允许将字体选择器嵌入到另一个QWidget中。

3.2.2 成员函数

1. 书写系统
void setWritingSystem(QFontDatabase::WritingSystem);
QFontDatabase::WritingSystem writingSystem() const;

setWritingSystem()成员函数用于设置字体选择器所使用的书写系统。它接受一个QFontDatabase::WritingSystem参数,指定Qt应该使用哪种书写系统。

书写系统(writingSystem) :书写系统包括一个或多个文字集和一系列规则,一个书写系统至少对应一种语言,可以用书写系统的符号集合和规则比如拼写规则、大小写等来表达对应的语言,如汉字、日文、罗马字等。

以下是一个示例使用setWritingSystem方法的代码片段:

QFontComboBox *fontCombo = new QFontComboBox(this);
fontCombo->setWritingSystem(QFontDatabase::SimplifiedChinese);

其中,QFontDatabase::WritingSystem 枚举了Qt支持的书写系统:

enum WritingSystem {Any,Latin,Greek,Cyrillic,Armenian,Hebrew,Arabic,Syriac,Thaana,Devanagari,Bengali,Gurmukhi,Gujarati,Oriya,Tamil,Telugu,Kannada,Malayalam,Sinhala,Thai,Lao,Tibetan,Myanmar,Georgian,Khmer,SimplifiedChinese,TraditionalChinese,Japanese,Korean,Vietnamese,Symbol,Other = Symbol,Ogham,Runic,Nko,WritingSystemsCount
};

默认值为QFontDatabase::Any ,表示支持平台系统所有的书写系统。

2. 字体过滤器
void setFontFilters(FontFilters filters);
FontFilters fontFilters() const;

setFontFilters成员函数允许开发人员指定字体选择器可以显示的字体。它接受一个QFontComboBox::FontFilters参数,该参数允许开发人员选择要允许的字体类型。例如,可以仅允许选择等宽字体,或仅允许选择粗体或斜体字体。

以下是一个示例使用setFontFilters方法的代码片段:

QFontComboBox *fontCombo = new QFontComboBox(this);
fontCombo->setFontFilters(QFontComboBox::MonospacedFonts);

其中,QFontComboBox::FontFilters 枚举了可选择的字体类型:

enum FontFilter {AllFonts = 0,ScalableFonts = 0x1,NonScalableFonts = 0x2,MonospacedFonts = 0x4,ProportionalFonts = 0x8
};

说明如下:

枚举描述
QFontComboBox::AllFonts0显示所有字体
QFontComboBox::ScalableFonts0x1显示可缩放字体
QFontComboBox::NonScalableFonts0x2显示不可缩放字体
QFontComboBox::MonospacedFonts0x4显示等宽字体
QFontComboBox::ProportionalFonts0x8显示比例字体

缩放字体(ScalableFonts):是指可以按比例缩放而不会失去质量的字体。与点阵字体(BitmapFonts)相比,缩放字体可以在任何尺寸下保持线条的清晰度和平滑度,而不会像点阵字体一样在放大时变得模糊和失真。缩放字体通常用于显示需要在不同大小的显示器和不同分辨率的屏幕上按比例扩展的文本。它们的另一个优点是它们可以用来创建真正的平滑曲线,尤其是在大的字体尺寸下,这对于设计师和艺术家来说非常重要。

比例字体(ProportionalFonts):是指每一个字符都有不同的宽度。例如,在比例字体中,大写字母"O"的宽度比小写字母"i"的宽度要宽得多。比例字体通常用于文本编辑和排版,因为它可以更好地适应不同字母的宽度,从而提高文本的可读性。

等宽字体(MonospacedFonts):是指每一个字符都有相同的宽度。例如,在等宽字体中,大写字母"O"和小写字母"i"的宽度是相同的。等宽字体通常用于编程和数据展示,因为字符对于编程和数据处理来说是等价的,这种字体使得代码和表格更易于阅读和理解。

3. 当前字体

既然是和QComboBox 类似的选择器,就会有当前所选择的item这一属性。

void setCurrentFont(const QFont &f);
QFont currentFont() const;

setCurrentFont函数用于设置当前选中的字体。它接受一个QFont类型的参数,该参数指定要设置为当前字体的字体。例如:

QFont font("Arial", 12);
fontComboBox->setCurrentFont(font);

currentFont函数返回当前选中的字体。例如:

QFont font = fontComboBox->currentFont();
4. 信号

当字体被选择,列表当前值发生改变时,QFontComboBox会发出 currentFontChanged 信号。

void currentFontChanged(const QFont &f);

它包含一个QFont类型的参数,指定用户选择的新字体。

以下是一个示例使用currentFontChanged信号的代码片段:

QFontComboBox *fontCombo = new QFontComboBox(this);
connect(fontCombo, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(onFontChanged(const QFont &)));void onFontChanged(const QFont &font)
{// do something
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/9690.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聚观早报 | 字节跳动要造机器人;苹果已开发悬空虚拟键盘

今日要闻:字节跳动要造机器人;苹果已开发悬空虚拟键盘;苹果汽车或售价9万美元;全球首例猪心脏移植患者仅存活60天;首款搭载ChatGPT的自行车问世 字节跳动要造机器人 7 月 3 日消息,「机器人」作为未来科技…

【IT服务管理】MITRE :IT服务管理

定义: 信息技术 (IT) 服务管理 (ITSM) 是解决管理、支持和交付 IT 服务的最佳实践的框架、流程和模型的通用保护伞。IT 服务可能包括(由 NIST 为云计算定义):软件即服务 (SaaS)、平台即服务 (PaaS) 和基础设施即服务 (IaaS)。 关键…

单片机-矩阵键盘密码锁

89C52RC芯片 1.矩阵按键输入正确密码&#xff0c;LCD1602右上角显示ok&#xff0c;错误显示Err。 涉及文件&#xff1a; 1.main.c (#include<regx52.h>) 2.lcd1602.c lcd1602.h 3.Delay.c Delay.h 4.MatrixKey.c MetrixKey.h 共7项 代码 main.c #…

【EasyX】使用C/C++实现 流星雨效果(配上详细注释解释)

&#x1f38a;专栏【​​​​​​​EasyX】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【Love Story】 &#x1f970;大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f354;效果&#x…

Webots介绍

Webots介绍 1 介绍1.1 概述1.2 应用1.3 入门要求1.4 技术支持1.5 仿真步骤世界&#xff08;webots定义&#xff09;控制器超级控制器 1.6 平台能力三维建模能力物理引擎外设支持 2 软件使用启动webots用户界面文件菜单编辑菜单查看菜单模拟菜单构建菜单叠加菜单工具菜单帮助菜单…

机器学习洞察 | JAX,机器学习领域的“新面孔”

在之前的《机器学习洞察》系列文章中&#xff0c;我们分别针对于多模态机器学习和分布式训练、无服务器推理进行了解读&#xff0c;本文将为您重点介绍 JAX 的发展并剖析其演变和动机。下面&#xff0c;就让我们来认识一下 JAX 这一新崛起的深度学习框架—— 亚马逊云科技开发…

react生命周期

react生命周期 16.3版本之前 挂载阶段&#xff1a; constructor&#xff1a;组件的构造函数&#xff08;constuctor&#xff09;部分&#xff0c;继承React Component&#xff0c;在constructor中通过super(props)调用父类React Component的构造函数&#xff0c;才拥有了之后的…

C语言程序环境和预处理

本章主要以图片和文字的形式给大家讲解 程序的翻译环境和程序的执行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境&#xff0c;它用于实际执行代码 2. 详解编译…

python 中禁用 SettingWithCopyWarning

最近代码中出现了这个warn&#xff0c;但是我确信我已经把所有的df赋值都改成loc了&#xff0c;依旧会出现&#xff0c;只有把这个warn禁了。 import pandas as pd import warnings# 禁用 SettingWithCopyWarning 警告 warnings.filterwarnings("ignore", categorypd…

【Kafka】Kafka基础操作笔记

【Kafka】Kafka基础操作笔记 文章目录 【Kafka】Kafka基础操作笔记1. 两种模式1.1 点对点模式1.2 发布/订阅模式 2. 基础架构3. Topic命令行操作3.1 查看 Topic 操作3.2 创建 Topic3.3 查看所有 Topic3.4 查看 Topic 的详情3.5 修改分区数3.6 删除 Topic 1. 两种模式 Kafka作为…

K8S应用生命周期管理

K8S应用生命周期管理. 1 应用周期管理1.1 资源对象1.1.1 基础知识1.1.2 资源属性 1.2 Pod基础1.2.1 Pod概述1.2.2 简单实践1.2.3 流程解读1.2.4 应用解析1.2.5 初始化容器1.2.6 Sidecar实践1.2.7 静态POD实践 1.3 Pod进阶1.3.1 Pod探测机制1.3.2 命令探测1.3.3 TCP探测1.3.4 HT…

服务无法注册进Eureka

相同的配置&#xff0c;在demo里能注册&#xff0c;在自己项目的无法注册&#xff0c;眼睛都快盯出老花眼了&#xff0c;还是不行&#xff0c;果然出现的问题只有在发现问题以后才觉得简单&#xff08;虽然确实是小问题&#xff0c;但是排查了一整天&#xff0c;值得记录一下&a…