QFont Class
QFont 类用于指定用于绘制文本的字体的查询。更多内容...
| 头文件: | #include <QFont> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- 所有成员的列表,包括继承的成员
- 已弃用的成员
- QFont 属于绘图类、隐式共享类以及富文本处理 API。
注意:该类中的所有函数均为可重入的。
公共类型
(since 6.7) struct | Tag |
| enum | Capitalization { MixedCase, AllUppercase, AllLowercase, SmallCaps, Capitalize } |
| enum | HintingPreference { PreferDefaultHinting, PreferNoHinting, PreferVerticalHinting, PreferFullHinting } |
| enum | SpacingType { PercentageSpacing, AbsoluteSpacing } |
| enum | Stretch { AnyStretch, UltraCondensed, ExtraCondensed, Condensed, SemiCondensed, …, UltraExpanded } |
| enum | Style { StyleNormal, StyleItalic, StyleOblique } |
| enum | StyleHint { AnyStyle, SansSerif, Helvetica, Serif, Times, …, System } |
| enum | StyleStrategy { PreferDefault, PreferBitmap, PreferDevice, PreferOutline, ForceOutline, …, PreferQuality } |
| enum | Weight { Thin, ExtraLight, Light, Normal, Medium, …, Black } |
公共函数
| QFont() | |
| QFont(const QFont &font, const QPaintDevice *pd) | |
| QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false) | |
| QFont(const QStringList &families, int pointSize = -1, int weight = -1, bool italic = false) | |
| QFont(const QFont &font) | |
| QFont(QFont &&) | |
| ~QFont() | |
| bool | bold() const |
| QFont::Capitalization | capitalization() const |
(since 6.7) void | clearFeatures() |
(since 6.7) void | clearVariableAxes() |
| QString | defaultFamily() const |
| bool | exactMatch() const |
| QStringList | families() const |
| QString | family() const |
(since 6.7) QList<QFont::Tag> | featureTags() const |
(since 6.7) quint32 | featureValue(QFont::Tag tag) const |
| bool | fixedPitch() const |
| bool | fromString(const QString &descrip) |
| QFont::HintingPreference | hintingPreference() const |
| bool | isCopyOf(const QFont &f) const |
(since 6.7) bool | isFeatureSet(QFont::Tag tag) const |
(since 6.7) bool | isVariableAxisSet(QFont::Tag tag) const |
| bool | italic() const |
| bool | kerning() const |
| QString | key() const |
| qreal | letterSpacing() const |
| QFont::SpacingType | letterSpacingType() const |
| bool | overline() const |
| int | pixelSize() const |
| int | pointSize() const |
| qreal | pointSizeF() const |
| QFont | resolve(const QFont &other) const |
| void | setBold(bool enable) |
| void | setCapitalization(QFont::Capitalization caps) |
| void | setFamilies(const QStringList &families) |
| void | setFamily(const QString &family) |
(since 6.7) void | setFeature(QFont::Tag tag, quint32 value) |
| void | setFixedPitch(bool enable) |
| void | setHintingPreference(QFont::HintingPreference hintingPreference) |
| void | setItalic(bool enable) |
| void | setKerning(bool enable) |
| void | setLetterSpacing(QFont::SpacingType type, qreal spacing) |
| void | setOverline(bool enable) |
| void | setPixelSize(int pixelSize) |
| void | setPointSize(int pointSize) |
| void | setPointSizeF(qreal pointSize) |
| void | setStretch(int factor) |
| void | setStrikeOut(bool enable) |
| void | setStyle(QFont::Style style) |
| void | setStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = PreferDefault) |
| void | setStyleName(const QString &styleName) |
| void | setStyleStrategy(QFont::StyleStrategy s) |
| void | setUnderline(bool enable) |
(since 6.7) void | setVariableAxis(QFont::Tag tag, float value) |
| void | setWeight(QFont::Weight weight) |
| void | setWordSpacing(qreal spacing) |
| int | stretch() const |
| bool | strikeOut() const |
| QFont::Style | style() const |
| QFont::StyleHint | styleHint() const |
| QString | styleName() const |
| QFont::StyleStrategy | styleStrategy() const |
| void | swap(QFont &other) |
| QString | toString() const |
| bool | underline() const |
(since 6.7) void | unsetFeature(QFont::Tag tag) |
(since 6.7) void | unsetVariableAxis(QFont::Tag tag) |
(since 6.7) QList<QFont::Tag> | variableAxisTags() const |
(since 6.7) float | variableAxisValue(QFont::Tag tag) const |
| QFont::Weight | weight() const |
| qreal | wordSpacing() const |
| operator QVariant() const | |
| bool | operator!=(const QFont &f) const |
| bool | operator<(const QFont &f) const |
| QFont & | operator=(QFont &&other) |
| QFont & | operator=(const QFont &font) |
| bool | operator==(const QFont &f) const |
静态公共成员
| void | insertSubstitution(const QString &familyName, const QString &substituteName) |
| void | insertSubstitutions(const QString &familyName, const QStringList &substituteNames) |
| void | removeSubstitutions(const QString &familyName) |
| QString | substitute(const QString &familyName) |
| QStringList | substitutes(const QString &familyName) |
| QStringList | substitutions() |
相关的非成员
| size_t | qHash(const QFont &key, size_t seed = 0) |
| QDataStream & | operator<<(QDataStream &s, const QFont &font) |
| QDataStream & | operator>>(QDataStream &s, QFont &font) |
详细说明
QFont 可视为对系统中一种或多种字体的查询。
在创建 QFont 对象时,需指定希望该字体具备的各种属性。 Qt 将使用具有指定属性的字体;如果不存在匹配的字体,Qt 将使用最接近的已安装字体。实际使用的字体的属性可通过QFontInfo 对象获取。如果窗口系统提供了完全匹配的字体,exactMatch() 将返回true 。使用QFontMetricsF 获取尺寸信息,例如使用QFontMetrics::horizontalAdvance() 获取字符串的像素长度。
未明确设置的属性不会影响字体选择算法,系统将优先采用默认值。
若要加载特定的物理字体(通常由单个文件表示),请改用QRawFont 。
请注意,必须先存在一个QGuiApplication 实例,才能使用QFont。您可以使用QGuiApplication::setFont()设置应用程序的默认字体。
如果所选字体不包含所有需要显示的字符,QFont 将尝试在最接近的等效字体中查找这些字符。当QPainter 从某字体中绘制字符时,QFont 会报告该字体是否包含该字符;如果不包含,QPainter 将绘制一个未填充的正方形。
创建 QFont 的方法如下:
在构造函数中设置的属性也可以在后续进行设置,例如:setFamily()、setPointSize()、setPointSizeF()、setWeight() 和setItalic()。其余属性必须在构造完成后设置,例如:setBold()、setUnderline()、setOverline()、setStrikeOut() 和setFixedPitch()。应在设置完字体属性后才创建QFontInfo 对象。QFontInfo 对象不会发生变化,即使您更改了字体的属性也是如此。相应的“get”函数(例如family()、pointSize() 等)会返回已设置的值,尽管实际使用的值可能有所不同。实际值可通过QFontInfo 对象获取。
如果请求的字体家族不可用,您可以通过使用setStyleHint() 选择特定的QFont::StyleHint 和QFont::StyleStrategy 来影响font matching algorithm 。defaultFamily() 会返回默认字体家族(对应于当前样式提示)。
您可以使用insertSubstitution()和insertSubstitutions()为字体家族名称提供替换项。可通过removeSubstitutions()移除替换项。使用substitute()可获取某个字体家族的第一个替换项,若无替换项则返回字体家族名称本身。使用substitutes()可获取某个字体家族的替换项列表(该列表可能为空)。 替换字体后,必须通过销毁并重新创建所有 QFont 对象来触发字体的更新。
每个 QFont 都提供key() 方法,您可以将其用作缓存或字典中的键。若要存储用户的字体偏好设置,可使用QSettings ,通过toString() 写入字体信息,并通过fromString() 读取。operator<<() 和 operator>>() 函数同样可用,但它们作用于数据流。
可以通过 `setPixelSize()` 将屏幕上显示的字符高度设置为指定的像素数;不过,使用 `setPointSize()` 也能达到类似效果,并且具有设备独立性。
加载字体可能耗时较长,特别是在 X11 环境下。QFont 包含大量优化措施,以加快 QFont 对象的复制速度,并缓存其所依赖的那些低效窗口系统函数的执行结果。
字体匹配算法的运行原理如下:
- 系统会搜索指定的字体家族(由setFamilies()设置)。
- 若未找到,则选择一种支持该书写系统的替代字体。字体匹配算法将尝试为 QFont 中设置的所有属性找到最佳匹配。具体实现方式因平台而异。
- 如果系统上不存在能够支持该文本的字体,则会在相应位置显示特殊的“缺失字符”框。
注意:如果 所选字体虽然总体上支持该书写系统,但缺少一个或多个特定字符的字形,则Qt将尝试为这些特定字符查找备用字体。可以通过QFont::NoFontMerging 样式策略禁用此功能。
在 Windows 系统中,对“Courier”字体的请求会自动转换为“Courier New”——这是 Courier 的改进版本,支持平滑缩放。通过设置PreferBitmap 样式策略,可以选择较旧的“Courier”位图字体(参见setStyleStrategy())。
一旦找到字体,其余属性将按优先级顺序进行匹配:
- fixedPitch()
- pointSize()(参见下文)
- weight()
- style()
如果有一个字体在字体家族上匹配,即使其他属性都不匹配,系统也会优先选择该字体,而非那个在字体家族上不匹配但在其他属性上匹配的字体。这是因为字体家族是主要的搜索条件。
点大小的匹配条件是:其值需在请求点大小的20%范围内。当多个字体匹配且仅在点大小上有所区别时,系统将选择点大小最接近请求值的字体。
用于绘制文本的实际字体家族、字号、字重及其他字体属性,将取决于窗口系统中该选定字体家族可用的资源。可通过QFontInfo 对象确定绘制文本时实际使用的数值。
示例:
QFont f("Helvetica");如果您同时拥有 Adobe 和 Cronyx 的 Helvetica 字体,则可能会显示其中任意一种。
QFont f("Helvetica [Cronyx]");你可以在字体家族名称中指定所需的字体厂商。上例中的字体 f 将被设置为“Helvetica [Cronyx]”。
要确定窗口系统中实际使用的字体属性,请使用QFontInfo 对象,例如:
要查询字体度量数据,请使用QFontMetrics 对象,例如:
QFontMetrics fm(f1);
int textWidthInPixels = fm.horizontalAdvance("How many pixels wide is this text?");
int textHeightInPixels = fm.height();有关字体的更多一般信息,请参阅comp.fonts 常见问题解答。有关编码的信息,请参阅UTR17页面。
另请参阅 QFontMetrics 、QFontInfo 以及QFontDatabase 。
成员类型文档
enum QFont::Capitalization
此字体所适用的文本的渲染选项。
| 常量 | 值 | 描述 |
|---|---|---|
QFont::MixedCase | 0 | 这是常规的文本渲染选项,不进行大写转换。 |
QFont::AllUppercase | 1 | 这会将文本更改为全部大写形式。 |
QFont::AllLowercase | 2 | 这会将文本更改为全部小写。 |
QFont::SmallCaps | 3 | 这会将文本更改为小写大写字体进行渲染。 |
QFont::Capitalize | 4 | 此选项将文本渲染为每个单词的首字母大写。 |
enum QFont::HintingPreference
该枚举描述了可应用于字形的各种提示级别,以在像素密度较高的显示设备上提高可读性。
| 常量 | 值 | 描述 |
|---|---|---|
QFont::PreferDefaultHinting | 0 | 使用目标平台的默认提示级别。 |
QFont::PreferNoHinting | 1 | 如果可能,在不为字形轮廓进行提示的情况下渲染文本。文本布局在排版上将准确且可缩放,并使用与打印时相同的度量标准。 |
QFont::PreferVerticalHinting | 2 | 如果可能,在不进行水平提示的情况下渲染文本,但在垂直方向上将字形对齐到像素网格。 在显示密度过低而无法准确渲染字形的情况下,文本将显得更加清晰。但由于字形的水平度量未经过提示处理,因此文本布局可扩展至更高密度的设备(如打印机),且不会影响换行等细节。 |
QFont::PreferFullHinting | 3 | 如果可能,请在水平和垂直方向都使用提示来渲染文本。 文本将进行调整以优化目标设备上的可读性,但由于度量值取决于文本的目标大小,字形位置、换行及其他排版细节将不会随比例调整,这意味着文本布局在像素密度不同的设备上可能看起来不同。 |
请注意,此枚举仅描述一种首选项,因为并非所有 Qt 支持的平台都支持全部提示级别。下表详细列出了给定的提示首选项在选定的一组目标平台上的效果。
| PreferDefaultHinting | PreferNoHinting | PreferVerticalHinting | PreferFullHinting | |
|---|---|---|---|---|
| Windows 且 Qt 中启用了 DirectWrite | 完全提示 | 垂直提示 | 垂直提示 | 完整提示 |
| FreeType | 操作系统设置 | 无提示 | 垂直提示(轻) | 全提示 |
| macOS 上的 Cocoa | 无提示 | 无提示 | 无提示 | 无提示 |
enum QFont::SpacingType
| 常数 | 值 | 说明 |
|---|---|---|
QFont::PercentageSpacing | 0 | 值为 100 时,间距保持不变;值为 200 时,将字符后的间距扩大一个字符的宽度。 |
QFont::AbsoluteSpacing | 1 | 正值会将字母间距增加相应的像素数;负值会减少间距。 |
enum QFont::Stretch
遵循 CSS 命名规范的预定义拉伸值。数值越大,文本拉伸程度越高。
| 常量 | 值 | 描述 |
|---|---|---|
QFont::AnyStretch (since Qt 5.8) | 0 | 0 接受使用其他QFont 属性匹配的任何拉伸效果 |
QFont::UltraCondensed | 50 | 50 |
QFont::ExtraCondensed | 62 | 62 |
QFont::Condensed | 75 | 75 |
QFont::SemiCondensed | 87 | 87 |
QFont::Unstretched | 100 | 100 |
QFont::SemiExpanded | 112 | 112 |
QFont::Expanded | 125 | 125 |
QFont::ExtraExpanded | 150 | 150 |
QFont::UltraExpanded | 200 | 200 |
另请参阅 setStretch() 和stretch()。
enum QFont::Style
此枚举描述了用于显示文本的各种字形样式。
| 常量 | 值 | 描述 |
|---|---|---|
QFont::StyleNormal | 0 | 用于无样式文本的常规字形。 |
QFont::StyleItalic | 1 | 专门为表示斜体文本而设计的斜体字形。 |
QFont::StyleOblique | 2 | 具有斜体外观的字形,通常基于无样式字形,但未针对表示斜体文本进行精细调整。 |
另请参阅 Weight 。
enum QFont::StyleHint
当选定的字体家族不可用时,font matching 算法会使用样式提示来查找合适的默认字体家族。
| 常量 | 值 | 描述 |
|---|---|---|
QFont::AnyStyle | 5 | 由字体匹配算法选择字体家族。这是默认设置。 |
QFont::SansSerif | Helvetica | 字体匹配器优先选择无衬线字体。 |
QFont::Helvetica | 0 | 是SansSerif 的同义词。 |
QFont::Serif | Times | 字体匹配器优先选择衬线字体。 |
QFont::Times | 1 | 是Serif 的同义词。 |
QFont::TypeWriter | Courier | 字体匹配器优先选择等宽字体。 |
QFont::Courier | 2 | TypeWriter 的同义词。 |
QFont::OldEnglish | 3 | 字体匹配器更倾向于装饰性字体。 |
QFont::Decorative | OldEnglish | 是OldEnglish 的同义词。 |
QFont::Monospace | 7 | 字体匹配器更倾向于映射到 CSS 通用字体族“monospace”的字体。 |
QFont::Fantasy | 8 | 字体匹配器更倾向于选择映射到 CSS 通用字体族 'fantasy' 的字体。 |
QFont::Cursive | 6 | 字体匹配器更倾向于选择映射到 CSS 通用字体家族“cursive”的字体。 |
QFont::System | 4 | 字体匹配器优先选择系统字体。 |
enum QFont::StyleStrategy
样式策略用于告知font matching 算法应使用何种字体类型,以便找到合适的默认字体家族。
可用的策略包括:
| 常量 | 值 | 描述 |
|---|---|---|
QFont::PreferDefault | 0x0001 | 默认样式策略。它不偏好任何类型的字体。 |
QFont::PreferBitmap | 0x0002 | 优先使用位图字体(而非轮廓字体)。 |
QFont::PreferDevice | 0x0004 | 优先使用设备字体。 |
QFont::PreferOutline | 0x0008 | 优先使用轮廓字体(而非位图字体)。 |
QFont::ForceOutline | 0x0010 | 强制使用轮廓字体。 |
QFont::NoAntialias | 0x0100 | 不对字体进行抗锯齿处理。 |
QFont::NoSubpixelAntialias | 0x0800 | 如果可能,避免对字体进行亚像素抗锯齿处理。 |
QFont::PreferAntialias | 0x0080 | 如果可能,则进行抗锯齿处理。 |
QFont::ContextFontMerging (since Qt 6.8) | 0x2000 | 如果所选字体不包含某个特定字符,则 Qt 会自动选择一个外观相似且包含该字符的备用字体。默认情况下,此操作按字符逐个进行。这意味着在某些不常见的情况下,即使文本属于同一字符集,也可能使用多种字体来呈现同一字符串。 将ContextFontMerging 设为真时,系统将尝试寻找与输入字符串最大子集匹配的备用字体。对于存在缺失字形的字符串,此操作开销会更大,但可能提供更一致的结果。如果NoFontMerging 被设置,则ContextFontMerging 将无效。 |
QFont::PreferTypoLineMetrics (since Qt 6.8) | 0x4000 | 出于兼容性考虑,OpenType 字体包含两组相互竞争的垂直线度量值,用于提供字体的ascent 、descent 和leading 。这些度量值通常被称为win(Windows)度量值和typo(排版)度量值。 虽然规范建议使用typo 度量值来控制行间距,但除非在字体的fsSelection字段中设置了USE_TYPO_METRICS 标志,否则许多应用程序更倾向于使用win 度量值。出于向后兼容性的考虑,Qt应用程序也是如此。 对于将USE_TYPO_METRICS 标志设为有效以表明typo 度量有效的字体,以及win 度量与typo 度量相匹配的字体,这不会构成问题。然而,对于某些字体,win 度量可能大于理想行距,且USE_TYPO_METRICS 标志可能因疏忽而未被设置。对于此类字体,设置PreferTypoLineMetrics 可能获得更佳效果。 |
QFont::NoFontMerging | 0x8000 | 如果为某种书写系统选定的字体不包含需要绘制的字符,则 Qt 会自动选择一种外观相似且包含该字符的字体。NoFontMerging 标志会禁用此功能。请注意,启用此标志并不会阻止 Qt 在所选字体不支持文本的书写系统时自动选择合适的字体。 |
QFont::PreferNoShaping | 0x1000 | 有时,字体会对一组字符应用复杂的规则以正确显示它们。在某些书写系统(如婆罗米文)中,这是确保文本可读性的必要条件;但在拉丁字母等系统中,这仅是一种美观功能。 当不需要此类功能时,“PreferNoShaping”标志将禁用所有此类功能,这在大多数情况下可提高性能(自 Qt 5.10 起)。 |
上述任何标志均可与以下标志之一进行“或”运算:
| 常量 | 值 | 描述 |
|---|---|---|
QFont::PreferMatch | 0x0020 | 优先精确匹配。字体匹配器将尝试使用指定的精确字号。 |
QFont::PreferQuality | 0x0040 | 优先选择质量最佳的字体。字体匹配器将使用该字体支持的、最接近的标准点大小。 |
enum QFont::Weight
Qt 使用与 OpenType 兼容的 1 到 1000 之间的字重标度。字重为 1 时为细体,而 1000 时则为极粗体。
此枚举包含预定义的字体粗细:
| 常量 | 值 | 描述 |
|---|---|---|
QFont::Thin | 100 | 100 |
QFont::ExtraLight | 200 | 200 |
QFont::Light | 300 | 300 |
QFont::Normal | 400 | 400 |
QFont::Medium | 500 | 500 |
QFont::DemiBold | 600 | 600 |
QFont::Bold | 700 | 700 |
QFont::ExtraBold | 800 | 800 |
QFont::Black | 900 | 900 |
成员函数文档
QFont::QFont()
创建一个使用应用程序默认字体的字体对象。
另请参阅 QGuiApplication::setFont() 和QGuiApplication::font()。
QFont::QFont(const QFont &font, const QPaintDevice *pd)
从font 构建一个字体,用于绘图设备pd 。
QFont::QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false)
根据指定的family 、pointSize 、weight 和italic 设置创建一个字体对象。
如果pointSize 为零或负数,则字体的点大小将设置为取决于系统的默认值。通常,该值为12点。
family 的名称可选地包含字体厂商名称,例如“Helvetica [Cronyx]”。如果同一字体家族family 由多个厂商提供且未指定厂商,则会随机选择一家厂商。如果该字体家族不可用,将通过font matching 算法设置字体家族。
这将按逗号分割字体家族字符串,并使用生成的列表调用setFamilies()。若要保留名称中包含逗号的字体,请使用接受QStringList 作为参数的构造函数。
另请参阅 Weight 、setFamily()、setPointSize()、setWeight()、setItalic()、setStyleHint()、setFamilies() 以及QGuiApplication::font()。
[explicit] QFont::QFont(const QStringList &families, int pointSize = -1, int weight = -1, bool italic = false)
根据指定的families 、pointSize 、weight 和italic 设置创建一个字体对象。
如果pointSize 为零或负数,则字体的点大小将设置为取决于系统的默认值。通常,该值为12点。
families 中的每个字体家族名称条目也可可选地包含字体厂商名称,例如“Helvetica [Cronyx]”。 如果该字体家族由多个字体厂商提供,且未指定具体厂商,则会随机选择一家厂商。如果该字体家族不可用,将使用font matching 算法设置一个字体家族。
另请参阅 Weight 、setPointSize()、setWeight()、setItalic()、setStyleHint()、setFamilies() 以及QGuiApplication::font()。
QFont::QFont(const QFont &font)
创建一个与font 相同的字体。
[constexpr noexcept default] QFont::QFont(QFont &&)
通过move操作构造一个QFont 实例。
[noexcept] QFont::~QFont()
销毁字体对象并释放所有已分配的资源。
bool QFont::bold() const
如果weight() 的值大于QFont::Medium ,则返回true ;否则返回false 。
另请参阅 weight()、setBold() 和QFontInfo::bold()。
QFont::Capitalization QFont::capitalization() const
返回字体的当前大写类型。
另请参阅 setCapitalization()。
[since 6.7] void QFont::clearFeatures()
清除QFont 上先前设置的任何字体特性。
有关字体特性的更多详细信息,请参阅setFeature()。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag 、setFeature()、unsetFeature()、featureTags() 和featureValue()。
[since 6.7] void QFont::clearVariableAxes()
清除QFont 上之前设置的任何变量轴值。
有关可变坐标轴的更多详细信息,请参阅setVariableAxis()。
该函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag 、setVariableAxis()、unsetVariableAxis()、isVariableAxisSet() 和variableAxisValue()。
QString QFont::defaultFamily() const
返回与当前样式提示对应的字体家族名称。
另请参阅 StyleHint 、styleHint() 和setStyleHint()。
bool QFont::exactMatch() const
如果存在与该字体设置完全匹配的窗口系统字体,则返回true 。
另请参阅 QFontInfo 。
QStringList QFont::families() const
返回请求的字体家族名称,即在最近一次调用setFamilies() 时或通过构造函数设置的名称。否则,返回一个空列表。
另请参阅 setFamily()、setFamilies()、family()、substitutes() 以及substitute()。
QString QFont::family() const
返回所请求的字体家族名称。该名称始终与families()调用中的第一个条目相同。
另请参阅 setFamily()、substitutes()、substitute()、setFamilies() 以及families()。
[since 6.7] QList<QFont::Tag> QFont::featureTags() const
返回当前在此QFont 上设置的所有字体特征的标签列表。
有关字体特性的更多详细信息,请参阅setFeature()。
该函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag 、setFeature()、unsetFeature()、isFeatureSet() 以及clearFeatures()。
[since 6.7] quint32 QFont::featureValue(QFont::Tag tag) const
返回特定功能tag 的设置值。如果该标签尚未设置,则返回0。
有关字体特性的更多详细信息,请参阅setFeature()。
该函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag 、setFeature()、unsetFeature()、featureTags() 以及isFeatureSet()。
bool QFont::fixedPitch() const
如果已设置固定步长,则返回true ;否则返回false 。
另请参见 setFixedPitch() 和QFontInfo::fixedPitch()。
bool QFont::fromString(const QString &descrip)
将此字体设置为与描述descrip 匹配。该描述是由逗号分隔的字体属性列表,与toString() 函数返回的结果一致。
另请参阅 toString()。
QFont::HintingPreference QFont::hintingPreference() const
返回使用此字体渲染的字形当前的首选提示级别。
另请参阅 setHintingPreference()。
[static] void QFont::insertSubstitution(const QString &familyName, const QString &substituteName)
将substituteName 插入到族familyName 的替换表中。
在替换字体后,通过销毁并重新创建所有QFont 对象来触发字体的更新。
另请参阅 insertSubstitutions()、removeSubstitutions()、substitutions()、substitute() 以及substitutes()。
[static] void QFont::insertSubstitutions(const QString &familyName, const QStringList &substituteNames)
将字体族列表substituteNames 插入到familyName 的替换列表中。
在替换字体后,通过销毁并重新创建所有QFont 对象来触发字体的更新。
另请参阅 insertSubstitution()、removeSubstitutions()、substitutions(),以及substitute()。
bool QFont::isCopyOf(const QFont &f) const
如果该字体与 `f ` 是彼此的副本(即其中一个是另一个的副本创建的,且自创建以来均未被修改),则返回 `true `。这比简单相等运算的判断要严格得多。
另请参阅 operator=() 和operator==()。
[since 6.7] bool QFont::isFeatureSet(QFont::Tag tag) const
如果已为QFont 设置了由tag 指定的特征值,则返回true;否则返回false。
有关字体特性的更多详细信息,请参阅setFeature()。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag 、setFeature()、unsetFeature()、featureTags() 和featureValue()。
[since 6.7] bool QFont::isVariableAxisSet(QFont::Tag tag) const
tag 如果QFont 中指定的变量axis的值已在 上设置,则返回true;否则返回false。
有关字体变量轴的更多详细信息,请参阅setVariableAxis()。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag 、setVariableAxis()、unsetVariableAxis()、variableAxisValue() 和clearVariableAxes()。
bool QFont::italic() const
true 如果字体的style() 不是QFont::StyleNormal
bool QFont::kerning() const
如果使用此字体绘制文本时应使用字间距调整,则返回true 。
另请参阅 setKerning()。
QString QFont::key() const
返回字体的键,即字体的文本表示形式。它通常用作字体缓存或字典的键。
另请参阅 QMap 。
qreal QFont::letterSpacing() const
返回该字体的字母间距。
另请参阅 setLetterSpacing()、letterSpacingType() 以及setWordSpacing()。
QFont::SpacingType QFont::letterSpacingType() const
返回用于字母间距的间距类型。
另请参阅 letterSpacing()、setLetterSpacing(),以及setWordSpacing()。
bool QFont::overline() const
如果已设置上划线,则返回true ;否则返回false 。
另请参阅 setOverline()。
int QFont::pixelSize() const
如果字体大小是通过 `setPixelSize()` 设置的,则返回该字体的像素大小;如果字体大小是通过 `setPointSize()` 或 `setPointSizeF()` 设置的,则返回 -1。
另请参见 setPixelSize()、pointSize()、QFontInfo::pointSize() 和QFontInfo::pixelSize()。
int QFont::pointSize() const
返回字体的点尺寸。如果字体大小以像素为单位指定,则返回 -1。
另请参阅 setPointSize() 和pointSizeF()。
qreal QFont::pointSizeF() const
返回字体的点大小。如果字体大小以像素为单位指定,则返回 -1。
另请参阅 pointSize()、setPointSizeF()、pixelSize()、QFontInfo::pointSize() 以及QFontInfo::pixelSize()。
[static] void QFont::removeSubstitutions(const QString &familyName)
删除所有对familyName 的替换。
另请参阅 insertSubstitutions()、insertSubstitution()、substitutions() 以及substitute()。
QFont QFont::resolve(const QFont &other) const
返回一个新的QFont 对象,该对象从other 中复制了尚未在此字体上设置过的属性。
void QFont::setBold(bool enable)
如果 `enable ` 为真,则将字体的粗细设置为 `QFont::Bold`;否则,将粗细设置为 `QFont::Normal`。
若需更精细的粗体控制,请使用setWeight()。
注意:如果已 设置styleName(),此值可能会被忽略;或者,如果平台支持,字体可能会被人工加粗。
void QFont::setCapitalization(QFont::Capitalization caps)
将此字体中文本的大小写格式设置为caps 。
字体的首字母大写设置会使文本以所选的首字母大写模式显示。
另请参阅 capitalization()。
void QFont::setFamilies(const QStringList &families)
设置该字体的字体家族名称列表。这些名称不区分大小写,且可包含字体厂商名称。families 中排在首位的字体家族将被设为该字体的默认字体家族。
families 中的每个字体家族名称条目也可可选地包含字体厂商名称,例如“Helvetica [Cronyx]”。 如果该字体家族由多个字体厂商提供且未指定具体厂商,则会随机选择一家厂商。如果该字体家族不可用,则将使用font matching 算法设置一个字体家族。
另请参阅 family()、families()、setFamily()、setStyleHint() 以及QFontInfo 。
void QFont::setFamily(const QString &family)
设置字体的家族名称。该名称不区分大小写,且可包含字体厂商名称。
family 名称可选地包含字体厂商名称,例如“Helvetica [Cronyx]”。如果同一字体家族(family )由多个厂商提供且未指定具体厂商,则会随机选择一家厂商。如果该字体家族不可用,将使用font matching 算法设置一个字体家族。
另请参阅 family()、setStyleHint()、setFamilies()、families() 以及QFontInfo 。
[since 6.7] void QFont::setFeature(QFont::Tag tag, quint32 value)
在对文本进行塑形时,将一个整数值应用于由tag 指定的排版特征。这提供了对字体塑形过程的高级访问权限,可用于支持API中未涵盖的字体特征。
该特征由tag 指定,其通常由字体特征映射中四字符的特征名称编码而来。
在大多数情况下,随标签传递的该整数value 代表一个布尔值:零值表示该特征已禁用,非零值表示已启用。然而,对于某些字体特征,它可能有其他含义。例如,当应用于salt 特征时,该值是一个索引,用于指定要使用的样式变体。
例如,frac 字体功能会将用斜杠分隔的斜向分数(如1/2 )转换为不同的表示形式。通常,这会将整个分数“烘焙”成单个字符宽度(如½ )。
如果字体支持frac 功能,则可在排版器中通过在字体功能映射中设置features["frac"] = 1 来启用该功能。
注意:默认情况下, Qt 会根据其他字体属性启用或禁用某些字体功能。 特别是,“kern ”功能将根据QFont 的kerning()属性来启用或禁用。此外,如果应用了letterSpacing(),则所有连字功能(liga 、clig 、dlig 、hlig )都将被禁用,但这仅适用于连字仅用于装饰的书写系统。对于需要连字的书写系统,这些功能将保持默认状态。 使用 setFeature() 及相关函数设置的值将覆盖默认行为。例如,若将“kern”特性设置为 1,则无论 kerning 属性是否设置为 false,字距调整都将始终启用。 同样地,如果将其设置为 0,则字距调整将始终被禁用。若要将字体功能重置为默认行为,可使用unsetFeature() 将其清除。
该函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag 、clearFeatures()、unsetFeature() 以及featureTags()。
void QFont::setFixedPitch(bool enable)
如果enable 为 true,则启用固定音高;否则,禁用固定音高。
另请参阅 fixedPitch() 和QFontInfo 。
void QFont::setHintingPreference(QFont::HintingPreference hintingPreference)
将字形提示级别的首选项设置为hintingPreference 。这是对底层字体渲染系统的一个提示,用于指定使用特定级别的提示,且不同平台对该功能的支持程度各不相同。更多详细信息,请参阅QFont::HintingPreference 文档中的表格。
默认提示首选项为QFont::PreferDefaultHinting 。
另请参阅 hintingPreference()。
void QFont::setItalic(bool enable)
如果enable 为真,则将字体的style()设置为QFont::StyleItalic ;否则,该样式将设置为QFont::StyleNormal 。
注意:如果已 设置styleName(),此值可能会被忽略;或者,如果平台支持,字体可能会以倾斜方式呈现,而不是选择设计的斜体字体变体。
void QFont::setKerning(bool enable)
如果enable 为true,则启用此字体的字间距调整;否则禁用。默认情况下,字间距调整处于启用状态。
当字间距调整功能启用时,字形度量值将不再相加,即使是拉丁文也是如此。换言之,width('a') + width('b') 等于 width("ab") 这一假设并不一定成立。
另请参阅 kerning() 和QFontMetrics 。
void QFont::setLetterSpacing(QFont::SpacingType type, qreal spacing)
将字体的字间距设置为spacing ,间距类型设置为type 。
字母间距会更改字体中单个字母之间的默认间距。根据所选的间距类型,字母之间的间距既可以缩小,也可以扩大,单位可以是字符宽度的百分比,也可以是像素。
另请参阅 letterSpacing()、letterSpacingType() 以及setWordSpacing()。
void QFont::setOverline(bool enable)
如果enable 为真,则开启上划线;否则关闭上划线。
void QFont::setPixelSize(int pixelSize)
将字体大小设置为pixelSize 像素,最大值为一个无符号16位整数。
使用此函数会导致字体依赖于设备。请使用setPointSize() 或setPointSizeF() 以与设备无关的方式设置字体大小。
另请参阅 pixelSize()。
void QFont::setPointSize(int pointSize)
将字号设置为pointSize 。字号必须大于零。
另请参阅 pointSize() 和setPointSizeF()。
void QFont::setPointSizeF(qreal pointSize)
将点大小设置为pointSize 。点大小必须大于零。并非所有平台都能达到所请求的精度。
另请参阅 pointSizeF()、setPointSize() 和setPixelSize()。
void QFont::setStretch(int factor)
设置字体的拉伸系数。
拉伸系数可匹配字体的紧缩版或扩展版,或应用拉伸变换,将字体中所有字符的宽度按factor 百分比进行调整。 例如,将factor 设置为150,会导致字体中的所有字符宽度增加1.5倍(即150%)。拉伸系数的最小值为1,最大值为4000。默认拉伸系数为AnyStretch ,该设置将接受任何拉伸系数,但不会对字体应用任何变换。
拉伸系数仅适用于轮廓字体。对于位图字体,拉伸系数将被忽略。
注意:当 匹配具有原生非默认拉伸系数的字体时 ,请求拉伸系数为100将使该字体恢复为中等宽度的字体。
另请参阅 stretch() 和QFont::Stretch 。
void QFont::setStrikeOut(bool enable)
如果 `enable ` 为真,则启用三振功能;否则禁用三振功能。
void QFont::setStyle(QFont::Style style)
将字体样式设置为style 。
另请参阅 style()、italic() 以及QFontInfo 。
void QFont::setStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = PreferDefault)
将样式提示和样式策略分别设置为hint 和strategy 。
如果未显式设置这些参数,样式提示将默认为AnyStyle ,样式策略将默认为PreferDefault 。
Qt 不支持 X11 上的样式提示,因为窗口系统不提供此类信息。
另请参阅 StyleHint 、styleHint()、StyleStrategy 、styleStrategy() 以及QFontInfo 。
void QFont::setStyleName(const QString &styleName)
将字体的样式名称设置为styleName 。设置后,在字体匹配过程中将忽略style()和weight()等其他样式属性,但如果平台字体引擎支持,这些属性随后可能会被模拟出来。
由于人工模拟的样式质量较低,且缺乏全面的跨平台支持,因此不建议将按样式名称匹配与按样式属性匹配结合使用
另请参阅 styleName()。
void QFont::setStyleStrategy(QFont::StyleStrategy s)
将字体的样式策略设置为s 。
另请参阅 styleStrategy() 和QFont::StyleStrategy 。
void QFont::setUnderline(bool enable)
如果enable 为真,则启用下划线;否则禁用下划线。
[since 6.7] void QFont::setVariableAxis(QFont::Tag tag, float value)
将value 应用于与tag 相对应的可变轴。
可变字体提供了一种在同一字体文件中存储多种变体(具有不同的字重、字宽或样式)的方法。这些变体以浮点数值的形式表示,对应于一组预定义的参数,称为“可变轴”。 具体实例通常由字体设计师命名,在 Qt 中,这些实例可以通过 `setStyleName()` 进行选择,就像传统的子字族一样。
在某些情况下,为不同的轴提供任意值也很有用。例如,如果一种字体有 Regular 和 Bold 子家族,您可能希望获得介于两者之间的字重。此时,您可以通过为字体的“wght”轴提供自定义值来手动请求该字重。
如果字体支持“wght”轴,且给定的值在其定义的范围内,则会提供对应字重为 550.0 的字体。
许多字体都提供了一些标准轴,例如“wght”(字重)、“wdth”(字宽)、“ital”(斜体)和“opsz”(光学尺寸)。它们各自在字体内部都有定义的独立范围。 例如,“wght”的范围可能从 100 到 900(QFont::Thin 到QFont::Black ),而“ital”的范围则可能从 0 到 1(从非斜体到完全斜体)。
字体还可以选择定义自定义坐标轴;唯一的限制是名称必须符合QFont::Tag 的要求(即由四个 Latin-1 字符组成的序列)。
默认情况下,未设置任何可变轴。
注意:在 Windows上 ,如果使用了可选的 GDI 字体后端,则不支持可变轴。
此函数在 Qt 6.7 中引入。
另请参阅 unsetVariableAxis 。
void QFont::setWeight(QFont::Weight weight)
将字体的权重设置为weight ,并使用QFont::Weight 枚举中定义的缩放比例。
注意:如果 已设置styleName(),则在字体选择时可能会忽略此值。
void QFont::setWordSpacing(qreal spacing)
将该字体的词间距设置为spacing 。
单词间距会改变单词之间的默认间距。正值会相应地增加单词间距的像素数,而负值则会相应地减少单词间距。
对于单词之间没有空格分隔的书写系统,单词间距将不适用。
另请参阅 wordSpacing() 和setLetterSpacing()。
int QFont::stretch() const
返回该字体的拉伸系数。
另请参阅 setStretch()。
bool QFont::strikeOut() const
如果已设置“strikeout”,则返回true ;否则返回false 。
另请参阅 setStrikeOut()。
QFont::Style QFont::style() const
返回字体的样式。
另请参阅 ` setStyle()`。
QFont::StyleHint QFont::styleHint() const
返回StyleHint 。
该样式提示会影响font matching algorithm 。有关可用提示的列表,请参阅QFont::StyleHint 。
另请参阅 setStyleHint()、QFont::StyleStrategy 以及QFontInfo::styleHint()。
QString QFont::styleName() const
返回请求的字体样式名称。这可用于匹配具有非标准样式(无法在其他样式属性中进行规范化)的字体。
另请参阅 setStyleName()、setFamily() 和setStyle()。
QFont::StyleStrategy QFont::styleStrategy() const
返回StyleStrategy 。
样式策略会影响font matching 算法。有关可用策略的列表,请参阅QFont::StyleStrategy 。
另请参阅 setStyleStrategy()、setStyleHint() 以及QFont::StyleHint 。
[static] QString QFont::substitute(const QString &familyName)
返回在指定familyName 时将使用的第一个姓氏。该查找操作不区分大小写。
如果familyName 没有替换项,则返回familyName 。
要获取替换项列表,请使用substitutes()。
另请参阅 setFamily()、insertSubstitutions()、insertSubstitution() 和removeSubstitutions()。
[static] QStringList QFont::substitutes(const QString &familyName)
返回一个姓氏列表,该列表将在指定familyName 时使用。查找操作不区分大小写。
如果familyName 没有替换项,则返回一个空列表。
另请参阅 substitute()、insertSubstitutions()、insertSubstitution() 和removeSubstitutions()。
[static] QStringList QFont::substitutions()
返回一个按排序后的替换姓氏列表。
另请参阅 insertSubstitution()、removeSubstitutions() 和substitute()。
[noexcept] void QFont::swap(QFont &other)
将此字体实例替换为other 。此操作速度极快,且绝不会失败。
QString QFont::toString() const
返回字体的描述。该描述是以逗号分隔的属性列表,非常适合在QSettings 中使用,包含以下内容:
- 字体家族
- 字号
- 像素大小
- 样式提示
- 字体粗细
- 字体样式
- 下划线
- 删除线
- 等宽字体
- 始终为0
- 大写
- 字母间距
- 单词间距
- 拉伸
- 样式策略
- 字体样式
- 字体特征
- 可变轴
另请参阅 fromString()。
bool QFont::underline() const
如果已设置下划线,则返回true ;否则返回false 。
另请参阅 setUnderline()。
[since 6.7] void QFont::unsetFeature(QFont::Tag tag)
从显式启用/禁用功能映射中移除tag 。
注意:即使 该特性此前未曾添加,此操作也会标记该QFont 中的字体特性映射已修改,从而在与其他字体进行解析时,该 将具有优先级。
取消设置QFont 上的现有功能将使行为恢复为默认状态。
有关字体功能的更多详细信息,请参阅setFeature()。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag 、clearFeatures()、setFeature()、featureTags() 以及featureValue()。
[since 6.7] void QFont::unsetVariableAxis(QFont::Tag tag)
撤销由tag 指定的先前设置的变量轴值。
此函数在 Qt 6.7 中引入。
另请参阅 setVariableAxis 。
[since 6.7] QList<QFont::Tag> QFont::variableAxisTags() const
返回当前在此QFont 上设置的所有可变坐标轴的标签列表。
有关可变坐标轴的更多详细信息,请参阅setVariableAxis()。
该函数于 Qt 6.7 中引入。
另请参阅 QFont::Tag 、setVariableAxis()、unsetVariableAxis()、isVariableAxisSet() 以及clearVariableAxes()。
[since 6.7] float QFont::variableAxisValue(QFont::Tag tag) const
返回特定变量轴tag 的设置值。如果该标签尚未设置,则返回0.0。
有关可变坐标轴的更多详细信息,请参阅setVariableAxis()。
该函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag 、setVariableAxis()、unsetVariableAxis()、isVariableAxisSet() 以及clearVariableAxes()。
QFont::Weight QFont::weight() const
返回字体的字重,采用与QFont::Weight 枚举相同的标度。
另请参阅 setWeight()、Weight 以及QFontInfo 。
qreal QFont::wordSpacing() const
返回该字体的词间距。
另请参阅 setWordSpacing() 和setLetterSpacing()。
QFont::operator QVariant() const
将字体作为QVariant
bool QFont::operator!=(const QFont &f) const
如果该字体与f 不相同,则返回true ;否则返回false 。
如果两个 QFont 的字体属性不同,则视为不同。
另请参阅 operator==()。
bool QFont::operator<(const QFont &f) const
提供对该字体与字体f 的任意比较。唯一能保证的是:当两个字体相等时,该运算符返回false ;当两个字体不相等时,(f1 < f2) == !(f2 < f1)。
在某些情况下,此函数非常有用,例如当您希望将QFont 对象用作QMap 中的键时。
另请参阅 operator==()、operator!=() 以及isCopyOf()。
[noexcept] QFont &QFont::operator=(QFont &&other)
将other 通过Move操作赋值给此QFont 实例。
QFont &QFont::operator=(const QFont &font)
将font 分配给此字体,并返回对其的引用。
bool QFont::operator==(const QFont &f) const
如果该字体等同于f ,则返回true ;否则返回 false。
如果两个 QFont 的字体属性相等,则视为相等。
另请参阅 operator!=() 和isCopyOf()。
相关的非成员
[noexcept] size_t qHash(const QFont &key, size_t seed = 0)
返回key 的哈希值,并使用seed 作为计算的种子。
QDataStream &operator<<(QDataStream &s, const QFont &font)
将字体font 写入数据流s 。(toString() 用于向文本流写入数据。)
另请参阅 QDataStream 运算符的格式。
QDataStream &operator>>(QDataStream &s, QFont &font)
从数据流s 中读取字体font 。(fromString() 从文本流中读取。)
另请参阅 QDataStream 运算符的格式。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.