QFont 类

The QFont class specifies a query for a font used for drawing text. 更多...

头文件 #include <QFont>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui

注意:本类中所有函数都是 重入的

公共类型

(since 6.7) structTag
enumCapitalization { MixedCase, AllUppercase, AllLowercase, SmallCaps, Capitalize }
enumHintingPreference { PreferDefaultHinting, PreferNoHinting, PreferVerticalHinting, PreferFullHinting }
enumSpacingType { PercentageSpacing, AbsoluteSpacing }
enumStretch { AnyStretch, UltraCondensed, ExtraCondensed, Condensed, SemiCondensed, …, UltraExpanded }
enumStyle { StyleNormal, StyleItalic, StyleOblique }
enumStyleHint { AnyStyle, SansSerif, Helvetica, Serif, Times, …, System }
enumStyleStrategy { PreferDefault, PreferBitmap, PreferDevice, PreferOutline, ForceOutline, …, PreferQuality }
enumWeight { Thin, ExtraLight, Light, Normal, Medium, …, Black }

公共函数

QFont()
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, const QPaintDevice *pd)
QFont(const QFont &font)
~QFont()
boolbold() const
QFont::Capitalizationcapitalization() const
(since 6.7) voidclearFeatures()
(since 6.7) voidclearVariableAxes()
QStringdefaultFamily() const
boolexactMatch() const
QStringListfamilies() const
QStringfamily() const
(since 6.7) QList<QFont::Tag>featureTags() const
(自6.7版本开始) quint32featureValue(QFont::Tag tag) const
boolfixedPitch() const
boolfromString(const QString &descrip)
QFont::HintingPreferencehintingPreference() const
boolisCopyOf(const QFont &f) const
(自6.7版本开始) boolisFeatureSet(QFont::Tag tag) const
(自6.7版本开始) boolisVariableAxisSet(QFont::Tag tag) const
boolitalic() const
boolkerning() const
QStringkey() const
qrealletterSpacing() const
QFont::SpacingTypeletterSpacingType() const
booloverline() const
intpixelSize() const
intpointSize() const
qrealpointSizeF() const
QFontresolve(const QFont &other) const
voidsetBold(bool enable)
voidsetCapitalization(QFont::Capitalization caps)
voidsetFamilies(const QStringList &families)
voidsetFamily(const QString &family)
(since 6.7) voidsetFeature(QFont::Tag tag, quint32 value)
voidsetFixedPitch(bool enable)
voidsetHintingPreference(QFont::HintingPreference hintingPreference)
voidsetItalic(bool enable)
voidsetKerning(bool enable)
voidsetLetterSpacing(QFont::SpacingType type, qreal spacing)
voidsetOverline(bool enable)
voidsetPixelSize(int pixelSize)
voidsetPointSize(int pointSize)
voidsetPointSizeF(qreal pointSize)
voidsetStretch(int factor)
voidsetStrikeOut(bool enable)
voidsetStyle(QFont::Style style)
voidsetStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = PreferDefault)
voidsetStyleName(const QString &styleName)
voidsetStyleStrategy(QFont::StyleStrategy s)
voidsetUnderline(bool enable)
(since 6.7) voidsetVariableAxis(QFont::Tag tag, float value)
voidsetWeight(QFont::Weight weight)
voidsetWordSpacing(qreal spacing)
intstretch() const
boolstrikeOut() const
QFont::Stylestyle() const
QFont::StyleHintstyleHint() const
QStringstyleName() const
QFont::StyleStrategystyleStrategy() const
voidswap(QFont &other)
QStringtoString() const
boolunderline() const
(since 6.7) voidunsetFeature(QFont::Tag tag)
(since 6.7) voidunsetVariableAxis(QFont::Tag tag)
(since 6.7) QList<QFont::Tag>variableAxisTags() const
(自6.7版本开始) floatvariableAxisValue(QFont::Tag tag) const
QFont::Weightweight() const
qrealwordSpacing() const
QVariantoperator QVariant() const
booloperator!=(const QFont &f) const
booloperator<(const QFont &f) const
QFont &operator=(const QFont &font)
QFont &operator=(QFont &&other)
booloperator==(const QFont &f) const

静态公共成员

voidinsertSubstitution(const QString &familyName, const QString &substituteName)
voidinsertSubstitutions(const QString &familyName, const QStringList &substituteNames)
voidremoveSubstitutions(const QString &familyName)
QStringsubstitute(const QString &familyName)
QStringListsubstitutes(const QString &familyName)
QStringListsubstitutions()
size_tqHash(const QFont &font, 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::width()获取字符串的像素长度。

没有具体设置的属性不会影响字体选择算法,将优先考虑默认值。

要加载特定的物理字体,通常由单个文件表示,请使用QRawFont

注意,在可以使用QFont之前,必须存在一个QGuiApplication实例。您可以使用QGuiApplication::setFont()设置应用程序的默认字体。

如果所选的字体不包含需要显示的所有字符,QFont将尝试在最近的类似字体中找到这些字符。当QPainter从一个字体中绘制字符时,QFont将报告它是否有该字符;如果没有,QPainter将绘制一个未填充的正方形。

创建QFont的方式如下:

QFont serifFont("Times", 10, QFont::Bold);
QFont sansFont("Helvetica [Cronyx]", 12);

构造函数中设置的属性也可以后来设置,例如 setFamily(),setPointSize(),setPointSizeF(),setWeight() 和 setItalic()。其余属性必须在构造之后设置,例如 setBold(),setUnderline(),setOverline(),setStrikeOut() 和 setFixedPitch()。应该在与字体属性设置完毕之后创建 QFontInfo 对象。即使您改变了字体的属性,QFontInfo 对象也不会改变。对应的 "get" 函数,如 family(),pointSize() 等,返回设置的值,尽管使用的值可能不同。实际的值可以从 QFontInfo 对象中获得。

如果请求的字体族不可用,您可以通过选择特定的 QFont::StyleHintQFont::StyleStrategy,使用 setStyleHint(),来影响 字体匹配算法。默认字体族(对应于当前样式提示)由 defaultFamily() 返回。

您可以使用 insertSubstitution() 和 insertSubstitutions() 提供字体族名称的替换。可以使用 removeSubstitutions() 删除替换。使用 substitute() 获取字体族的第一替换,如果没有替换,则获取字体名称本身。使用 substitutes() 获取字体族的替换列表(可能为空)。在替换字体后,您必须通过销毁并重新创建所有 QFont 对象来触发字体的更新。

每个 QFont 都有一个 key(),您可以使用该 key,例如,作为缓存或字典的键。如果您想存储用户的字体首选项,可以使用 QSettings,使用 toString() 写入字体信息,并使用 fromString() 读取它。操作符 <<() 和 >>() 函数也可用,但它们作用于数据流。

可以使用 setPixelSize() 将屏幕上显示的字符高度设置为指定像素数;然而使用 setPointSize() 有相似的效果,并提供设备无关性。

加载字体可能会非常昂贵,尤其是在 X11 上。QFont 包含了广泛的优化来使 QFont 对象的复制更快,并缓存其依赖于的慢速窗口系统函数的结果。

字体匹配算法的工作方式如下

  1. 搜索指定的字体族(由 setFamilies() 设置)。
  2. 如果没有,则选择支持书写系统的替换字体。字体匹配算法将尝试找到与 QFont 中设置的属性最匹配的字体。具体做法因平台而异。
  3. 如果系统中没有可以支持文本的字体,则会在其位置显示特殊的 "缺失字符" 方框。

注意:如果选定的字体虽然支持一般的书写系统,但缺少一个或多个特定字符的符号,Qt 会尝试为这些特定字符找到一个回退字体。可以使用 QFont::NoFontMerging 样式策略禁用此功能。

在Windows中,对“Courrier”字体的请求会自动更改为“Courier New”,这是Courier的改进版本,允许进行平滑缩放。可以通过设置PreferBitmap样式策略选择较旧的“Courrier”位图字体(见setStyleStrategy())。

一旦找到字体,则按优先级顺序匹配剩余属性

  1. fixedPitch()
  2. pointSize()(见下文)
  3. weight()
  4. style()

如果你有一个在家族属性上匹配的字体,即使其他属性都不匹配,这个字体也会优先于家族不匹配但其他属性匹配的字体。这是因为字体家族是主要的搜索标准。

点字大小被定义为,如果它在请求点大小的20%范围内,则匹配。当有几个字体匹配但仅通过点大小来区分时,将选择与请求点大小最接近的字体。

用于绘制文本的实际家族、字体大小、粗细和其他字体属性将取决于窗口系统下所选家族的可用性。可以使用QFontInfo对象来确定用于绘制文本的实际值。

示例

QFont f("Helvetica");

如果你同时有Adobe和Cronyx Helvetica,你可能会得到任意一个。

QFont f("Helvetica [Cronyx]");

你可以在家族名称中指定你想要的铸造厂。上面的示例中字体f将被设置为“Helvetica [Cronyx]”。

为了确定窗口系统中实际使用的字体属性,请使用QFontInfo对象,例如。

QFontInfo info(f1);
QString family = info.family();

要获取字体度量信息,请使用QFontMetrics对象,例如。

QFontMetrics fm(f1);
int textWidthInPixels = fm.horizontalAdvance("How many pixels wide is this text?");
int textHeightInPixels = fm.height();

有关字体的一般信息,请参阅comp.fonts FAQ。有关编码的信息可以从UTR17页面找到。

另请参阅 QFontMetricsQFontInfo,和QFontDatabase

成员类型文档

枚举QFont::Capitalization

此字体应用于文本的渲染选项。

常量说明
QFont::MixedCase0这是正常的文本渲染选项,不应用大写变化。
QFont::AllUppercase1此选项将文本更改为全部大写。
QFont::AllLowercase2此选项将文本更改为全部小写。
QFont::SmallCaps3此选项将文本更改为小写字母。
QFont::Capitalize4此选项将文本的每个单词的首字母更改为大写。

枚举QFont::HintingPreference

此枚举描述了可以应用到字母表符号的不同级别的提示,以在可能需要像素密度的情况下改善显示的可读性。

常量说明
QFont::PreferDefaultHinting0使用目标平台的默认提示级别。
QFont::PreferNoHinting1如果可能,渲染文本时无需提示字母表的轮廓。文本布局将在打印时使用相同的度量,具有排版精确和可缩放的特性。
QFont::PreferVerticalHinting2如果可能,不带水平提示渲染文本,但将字母表沿垂直方向对齐到像素网格。这在显示器像素密度太低,无法准确渲染字母表符号时,文本将更清晰。但由于字母表的水平度量未提示,因此文本布局可以扩展到更高密度的设备(如打印机),而不会影响细节数据,如换行。
QFont::PreferFullHinting3如果可能的话,请在水平和垂直两个方向上对文本进行提示渲染。文本将根据目标设备优化可读性进行修改,但由于度量取决于文本的目标大小,标素的位?置、行中断以及其他排版细节将不会缩放,这意味着在不同像素密度的设备上的文本布局可能看起来不同。

请注意,此枚举仅描述了一个首选项,因为Qt支持的所有平台都不支持所有提示级别。以下表格详细说明了对选定一组目标平台上的给定提示设置的影响。

PreferDefaultHintingPreferNoHintingPreferVerticalHintingPreferFullHinting
Windows 和 Qt 中的 DirectWrite 启用完全提示垂直提示垂直提示完全提示
FreeType操作系统设置无提示垂直提示(轻量级)完全提示
macOS上的Cocoa无提示无提示无提示无提示

枚举QFont::SpacingType

常量说明
QFont::PercentageSpacing0值为100将保持间距不变;值为200将在字符后面增加与字符宽度相同的间距。
QFont::AbsoluteSpacing1正值将字符间距增加相应的像素;负值将减小间距。

enum QFont::Stretch

预定义的拉伸值遵循CSS命名约定。值越高,文本拉伸越大。

常量说明
QFont::AnyStretch (从Qt 5.8开始)00 使用其他QFont属性接受任何匹配的拉伸
QFont::UltraCondensed5050
QFont::ExtraCondensed6262
QFont::Condensed7575
QFont::SemiCondensed8787
QFont::Unstretched100100
QFont::SemiExpanded112112
QFont::Expanded125125
QFont::ExtraExpanded150150
QFont::UltraExpanded200200

另请参阅 setStretch() 和 stretch()。

枚举QFont::Style

此枚举描述了用于显示文本的标素的不同样式。

常量说明
QFont::StyleNormal0用于无样式的文本的正常标素。
QFont::StyleItalic1专门设计用于表示斜体文本的斜体标素。
QFont::StyleOblique2具有斜体外观的标素通常基于无样式的标素,但并未针对表示斜体文本的目的进行微调。

另请参阅 Weight

枚举QFont::StyleHint

样式提示由字体匹配算法使用,当所选字体族不可用时时查找合适的默认字体族。

常量说明
QFont::AnyStyle5使字体匹配算法能够选择家族。这是默认设置。
QFont::SansSerifHelvetica字体匹配器更倾向于无衬线字体。
QFont::Helvetica0等同于SansSerif
QFont::SerifTimes字体匹配器更倾向于衬线字体。
QFont::Times1等同于Serif
QFont::TypeWriterCourier字体匹配器更倾向于等宽字体。
QFont::Courier2等同于TypeWriter
QFont::OldEnglish3字体匹配器更倾向于装饰字体。
QFont::DecorativeOldEnglish等同于OldEnglish
QFont::Monospace7字体匹配器更倾向于映射到CSS通用字体家族'monospace'的字体。
QFont::Fantasy8字体匹配器更倾向于映射到CSS通用字体家族'fantasy'的字体。
QFont::Cursive6字体匹配器更倾向于映射到CSS通用字体家族'cursive'的字体。
QFont::System4字体匹配器更倾向于系统字体。

enum QFont::StyleStrategy

样式策略告诉字体匹配算法应该使用何种类型的字体来找到合适的默认字体族。

以下策略可供选择

常量说明
QFont::PreferDefault0x0001默认样式策略。它不偏好任何类型的字体。
QFont::PreferBitmap0x0002偏好位图字体(而不是轮廓字体)。
QFont::PreferDevice0x0004偏好设备字体。
QFont::PreferOutline0x0008偏好轮廓字体(而不是位图字体)。
QFont::ForceOutline0x0010强制使用轮廓字体。
QFont::NoAntialias0x0100不使用抗锯齿。
QFont::NoSubpixelAntialias0x0800如果可能,避免对字体进行子像素抗锯齿。
QFont::PreferAntialias0x0080如果可能,进行抗锯齿。
QFont::NoFontMerging0x8000如果为某一种文本系统选择的字体不包含所请求绘制的字符,Qt会自动选择一个包含该字符的类似外观的字体。NoFontMerging标志将禁用此功能。请注意,启用此标志不会防止Qt在选择不支持的文本系统的字体时自动选择合适的字体。
QFont::PreferNoShaping0x1000有时,字体会对一组字符应用复杂的规则,以正确显示它们。在某些书写系统中,例如梵文书写系统,这是为了使文本可读所必需的,但在例如拉丁文中,这仅仅是一个外观特征。PreferNoShaping标志将禁用当不需要这些功能时所有的这些特性,这通常会在大多数情况下提高性能(从Qt 5.10开始)。

这其中的任何一个都可以与下面的任何一个标志进行或操作

常量说明
QFont::PreferMatch0x0020偏好准确匹配。字体匹配器会尝试使用指定的确切字体大小。
QFont::PreferQuality0x0040偏好最佳质量的字体。字体匹配器将使用该字体支持的最接近的标准点大小。

枚举 fountain::Weight

Qt使用从1到1000的权重标度,与OpenType兼容。权重为1将是最细的,而1000将是极深的黑色。

本枚举包含预定义的字体权重

常量说明
QFont::Thin100100
QFont::ExtraLight200200
QFont::Light300300
QFont::Normal400400
QFont::Medium500500
QFont::DemiBold600600
QFont::Bold700700
QFont::ExtraBold800800
QFont::Black900900

成员函数文档

QFont::QFont()

构造一个使用应用程序默认字体的字体对象。

参见 QGuiApplication::setFont() 和 QGuiApplication::font

QFont::QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false)

使用指定的familypointSizeweightitalic 设置构造一个字体对象。

如果 pointSize 是零或负数,则字体的大小将设置为系统依赖的默认值。通常,这是12点。

family 名称可能还包含字库名称,例如 "Helvetica [Cronyx]"。如果来自多个字库,并且没有指定字库,则随机选择一个字库。如果字体族不可用,将使用字体匹配算法设置字体族。

此操作将在家谱字符串上拆分逗号,并使用结果列表调用setFamilies()。为了保留使用逗号命名的字体,请使用接受QStringList的构造函数。

另请参阅WeightsetFamily()、setPointSize()、setWeight()、setItalic()、setStyleHint()、setFamiliesQGuiApplication::font

[显式] QFont::QFont(const QStringList &families, int pointSize = -1, int weight = -1, bool italic = false)

使用指定的familiespointSizeweightitalic设置构造字体对象。

如果 pointSize 是零或负数,则字体的大小将设置为系统依赖的默认值。通常,这是12点。

families中的每个家族名称条目可以选择包含一个厂商名称,例如“Helvetica [Cronyx]”。如果家族从多个厂商可用且未指定厂商,则选择任意厂商。如果家族不可用,将使用字体匹配算法设置家族。

另请参阅WeightsetPointSize()、setWeight()、setItalic()、setStyleHint()、setFamiliesQGuiApplication::font

QFont::QFont(const QFont &font, const QPaintDevice *pd)

在画布设备pd上使用font构造一个字体。

QFont::QFont(const QFont &font)

构造一个与font相同的字体。

[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::TagsetFeature()、unsetFeature()、featureTagsfeatureValue

[since 6.7] void QFont::clearVariableAxes()

清除QFont上的之前设置的变量轴值。

有关变量轴的更多详细信息,请参阅setVariableAxis()。

此功能是在Qt 6.7中引入的。

另请参阅QFont::TagsetVariableAxis()、unsetVariableAxis()、isVariableAxisSet()以及variableAxisValue

QString QFont::defaultFamily() const

返回与当前样式提示相对应的家族名称。

另请参阅StyleHintstyleHintsetStyleHint

bool QFont::exactMatch() const

如果可用的窗口系统字体与此字体设置精确匹配,则返回true

另请参阅QFontInfo

QStringList QFont::families() const

返回请求的字体家族名称,即最后在setFamilies()调用中设置或通过构造函数设置的名称。否则返回空列表。

另请参阅setFamilysetFamiliesfamilysubstitutessubstitute

QString QFont::family() const

返回请求的字体家族名称。这将始终与families()调用中的第一个条目相同。

另请参阅setFamilysubstitutessubstitutesetFamiliesfamilies

[since 6.7] QList<QFont::Tag> QFont::featureTags() const

返回设置在这个QFont上的所有字体特征的标签列表。

有关字体功能的更多详细信息,请参阅setFeature()。

此功能是在Qt 6.7中引入的。

另请参阅QFont::TagsetFeatureunsetFeatureisFeatureSetclearFeatures

[since 6.7] quint32 QFont::featureValue(QFont::Tag tag) const

返回特定特性tag所设置的值。如果没有设置此标签,则返回0。

有关字体功能的更多详细信息,请参阅setFeature()。

此功能是在Qt 6.7中引入的。

另请参阅QFont::TagsetFeatureunsetFeaturefeatureTagsisFeatureSet

bool QFont::fixedPitch() const

如果已设置固定间距,则返回true;否则返回false

另请参阅setFixedPitchQFontInfo::fixedPitch

bool QFont::fromString(const QString &descrip)

将当前字体设置为与描述符descrip相匹配。描述符是字体的属性列表,以逗号分隔,由toString()函数返回。

另请参阅toString()。

QFont::HintingPreference QFont::hintingPreference() const

返回当前对此字体渲染的符号的首选光栅化级别。

另请参阅setHintingPreference()。

[静态] void QFont::insertSubstitution(const QString &familyName, const QString &substituteName)

substituteName插入到家族familyName的替换表中。

替代字体后,销毁并重新创建所有的QFont对象,以触发字体的更新。

另请参阅insertSubstitutions()、removeSubstitutions()、substitutions()、substitute()和substitutes()。

[静态] 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::TagsetFeature()、unsetFeature()、featureTagsfeatureValue

[since 6.7] bool QFont::isVariableAxisSet(QFont::Tag tag) const

如果已设置由tag指定的变量轴的值,则返回true,否则返回false。

有关字体变量轴的更多信息,请参阅setVariableAxis()。

此功能是在Qt 6.7中引入的。

另请参阅QFont::TagsetVariableAxisunsetVariableAxisvariableAxisValueclearVariableAxes

bool QFont::italic() const

如果字体样式 style() 不是 QFont::StyleNormal,则返回 true

另见 setItalic() 和 style()。

bool QFont::kerning() const

如果使用此字体绘制文本需要使用字符间距,则返回 true

另见 setKerning()。

QString QFont::key() const

返回字体的键,它是字体的文本表示形式。通常用作字体缓存或字典的键。

另见 QMap

qreal QFont::letterSpacing() const

返回字体的字母间距。

另见 setLetterSpacing(),letterSpacingType() 和 setWordSpacing()。

QFont::SpacingType QFont::letterSpacingType() const

返回用于字母间距的间距类型。

另见 letterSpacingsetLetterSpacingsetWordSpacing

bool QFont::overline() const

如果设置了上划线,则返回 true;否则返回 false

另见 setOverline

int QFont::pixelSize() const

如果字体是用 setPixelSize() 设置的,则返回字体的像素大小。如果大小是用 setPointSize() 或 setPointSizeF() 设置的,则返回 -1。

另见 setPixelSizepointSizeQFontInfo::pointSizeQFontInfo::pixelSize

int QFont::pointSize() const

返回字体的大小(以点为单位)。如果字体大小是以像素指定的,则返回 -1。

另见 setPointSizepointSizeF

qreal QFont::pointSizeF() const

返回字体的大小(以点为单位)。如果字体大小是以像素指定的,则返回 -1。

另见 pointSizesetPointSizeFpixelSizeQFontInfo::pointSizeQFontInfo::pixelSize

[静态] void QFont::removeSubstitutions(const QString &familyName)

删除所有对 familyName 的替换。

另见 insertSubstitutionsinsertSubstitutionsubstitutionssubstitute

QFont QFont::resolve(const QFont &other) const

返回一个新的具有从other中复制的未在此字体上预先设置的属性QFont

void QFont::setBold(bool enable)

如果enable为真,则将字体权重设置为QFont::Bold;否则设置为QFont::Normal

使用setWeight()进行更精细的加粗控制。

注意:如果设置了styleName(),此值可能被忽略,或在平台上受支持的情况下,字体将被人为加粗。

另请参阅:bold()和setWeight()。

void QFont::setCapitalization(QFont::Capitalization caps)

将此字体中文本的格式化设置为caps

字体的格式化会使文本以选定的格式化模式显示。

另请参阅:capitalization()。

void QFont::setFamilies(const QStringList &families)

设置字体的家族名称列表。名称不区分大小写,可能包含制作者名称。在families中的第一个家族将被设置为字体的主家族。

families中的每个家族名称条目可以选择包含一个厂商名称,例如“Helvetica [Cronyx]”。如果家族从多个厂商可用且未指定厂商,则选择任意厂商。如果家族不可用,将使用字体匹配算法设置家族。

另请参阅:family(),families(),setFamily(),setStyleHint()和QFontInfo()。

void QFont::setFamily(const QString &family)

设置字体的家族名称。名称不区分大小写,可能包含制作者名称。

family 名称可能还包含字库名称,例如 "Helvetica [Cronyx]"。如果来自多个字库,并且没有指定字库,则随机选择一个字库。如果字体族不可用,将使用字体匹配算法设置字体族。

另请参阅:family(),setStyleHint(),setFamilies(),families()和QFontInfo()。

[自6.7以来] void QFont::setFeature(QFont::Tag tag, quint32 value)

这是一个重载函数。

在形成文本时,对由tag指定的印刷特征应用整数值。这提供了对字体造型过程的更高级访问,并可用于支持API中未涵盖的字体特性。

该特征由一个tag指定,该tag通常是从字体特性映射中的四个字符特性名称编码而来的。

在这种情况下,传递给tag的整数value表示一个布尔值:值为零表示禁用特性,非零值表示启用。但对于某些字体特征,它可能有其他解释。例如,当应用于salt特性时,它的值是一个指定要使用哪种风格选择的索引。

例如,frac字体特性将用不同的表示方式转换用斜杠分开的对角线分数(如1/2)。这通常涉及将整个分数作为一个单独的字符宽度烘焙(如½)。

如果字体支持 frac 功能,则可以在形状器中通过在字体特征映射中设置 features["frac"] = 1 来启用它。

注意:默认情况下,Qt会根据其他字体属性启用和禁用某些字体功能。特别是,kern 功能将根据 kerning() 属性启用或禁用 QFont。此外,如果应用了 letterSpacing(),则所有连字功能(ligacligdlighlig)将被禁用,但仅限于连字主要用于外观的书写系统。对于需要连字的书写系统,功能将保持默认状态。使用 setFeature() 和相关函数设置的值将覆盖默认行为。例如,如果将“kern”功能设置为 1,则字距调整始终启用,无论是否存在 kerning 属性设置为 false。类似地,如果将其设置为 0,则始终禁用。要重置字体功能到其默认行为,您可以使用 unsetFeature() 进行清除。

此功能是在Qt 6.7中引入的。

另请参阅:QFont::TagclearFeatures()、setFeature()、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 为 true,将字体样式设置为 style() 的 QFont::StyleItalic;否则将样式设置为 QFont::StyleNormal

注意:如果设置了 styleName(),则此值可能会被忽略,或者如果平台支持,则可能采用倾斜的字体变体而不是选择设计的斜体字体。

另请参阅:italic() 和 QFontInfo

void QFont::setKerning(bool enable)

如果 enable 为 true,则为该字体启用字距调整;否则禁用。默认情况下,启用字距调整。

当启用字距调整时,即使对于拉丁文本,符号度量也不再累加。也就是说,字符'a'的宽度 + 字符'b'的宽度不一定等于 "ab" 的宽度。

另请参阅:kerning() 和 QFontMetrics

void QFont::setLetterSpacing(QFont::SpacingType type, qreal spacing)

设置字体字母间距为 间距 和间距类型为 类型

字母间距可以改变字体中单个字母之间的默认间距,间距可以是字符宽度的百分比或像素,具体取决于选择的间距类型,可以是更小或更大的间距。

另见 letterSpacing(),letterSpacingType() 和 setWordSpacing()。

void QFont::setOverline(bool enable)

如果 enable 为 true,则开启上划线;否则关闭上划线。

另见 overline() 和 QFontInfo

void QFont::setPixelSize(int pixelSize)

将字体大小设置为 pixelSize 像素,最大尺寸为无符号 16 位整数的大小。

使用此函数使得字体与设备相关。请使用 setPointSize() 或 setPointSizeF() 来以设备无关的方式设置字体的大小。

另见 pixelSize

void QFont::setPointSize(int pointSize)

设置为 pointSize 点的大小。点大小必须大于零。

另见 pointSize() 和 setPointSizeF

void QFont::setPointSizeF(qreal pointSize)

设置为 pointSize 点的大小。点大小必须大于零。在所有平台上可能无法实现所需的精度。

另见 pointSizeFsetPointSizesetPixelSize

void QFont::setStretch(int factor)

设置字体的拉伸因子。

拉伸因子匹配字体的瘦体或胖体版本,或者应用拉伸变换,通过 factor 百分比改变字体内所有字符的宽度。例如,将 factor 设置为 150,则字体中所有字符都会变为 1.5 倍宽(即 150%)。最小拉伸因子为 1,最大拉伸因子为 4000。默认拉伸因子为 AnyStretch,它将接受任何拉伸因子且不对字体应用任何变换。

拉伸因子仅适用于轮廓字体。对于位图字体,拉伸因子将被忽略。

注意: 当与天然非默认拉伸因子的字体匹配时,请求 100% 的拉伸会将它拉伸回中等宽度字体。

另见 stretch() 和 QFont::Stretch

void QFont::setStrikeOut(bool enable)

如果 enable 为 true,则开启删除线;否则关闭删除线。

另见 strikeOut() 和 QFontInfo

void QFont::setStyle(QFont::Style style)

设置字体的风格为 style

另请参阅 style(),italic(),以及QFontInfo

void QFont::setStyleHint(QFont::StyleHint hintQFont::StyleStrategy strategy = PreferDefault)

设置样式提示和策略分别为hintstrategy

如果没有显式设置,样式提示将默认为AnyStyle,样式策略默认为PreferDefault

Qt不支持在X11上使用样式提示,因为窗口系统不提供这些信息。

另请参阅 StyleHintstyleHintStyleStrategystyleStrategy,以及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为true,则设置下划线开启;否则关闭下划线。

另请参阅 underline()和QFontInfo

[since 6.7] void QFont::setVariableAxis(QFont::Tag tagfloat value)

将对应于tag的变量轴应用value

变量字体提供了一种在同一个字体文件中存储多个变体(具有不同的重量、宽度或样式)的方法。这些变体以预定参数集合的浮点值给出,称为“变量轴”。具体的实例通常由字体设计师命名,在Qt中,这些可以通过类似于传统子族的setStyleName()来选择。

有时,也为不同的轴提供任意值也是有用的。例如,如果一种字体具有Regular和Bold子族,您可能需要一个介于这两个子族之间的重量。您可以通过为字体中的“wght”轴提供自定义值来手动请求。

QFont font;
font.setVariableAxis("wght", (QFont::Normal + QFont::Bold) / 2.0f);

如果“wght”轴被字体支持,并且给定的值在其定义的范围内,则将提供重量为550.0的字体。

许多字体提供了几个标准轴,例如 "wght"(粗细),"wdth"(宽度),"ital"(斜体)和 "opsz"(光学大小)。它们在字体本身中都有各自的定义范围。例如,"wght" 可从 100 到 900(从 QFont::ThinQFont::Black),而 "ital" 可从 0 到 1(从非斜体到全斜体)。

字体还可以选择定义自定义轴;唯一限制是名称必须符合 QFont::Tag(四个拉丁-1字符序列)的要求。

默认情况下,没有设置可变轴。

注意:为了在 Windows 上使用可变轴,应用程序必须使用 FreeType 或 DirectWrite 字体数据库运行。有关如何选择这些技术的信息,请参阅 QGuiApplication::QGuiApplication() 文档。

此功能是在Qt 6.7中引入的。

另请参阅:unsetVariableAxis

void QFont::setWeight(QFont::Weight weight)

将字体的粗细设置为 weight,使用由 QFont::Weight 枚举定义的缩放比例。

注意:如果设置了 styleName(),则此值可能在字体选择时被忽略。

另请参阅:weight() 和 QFontInfo

void QFont::setWordSpacing(qreal spacing)

将字体的单词间距设置为 spacing

单词间距改变默认的单词间距。正值会增加单词间距的像素数,而负值会相应地减少单词间的间距。

单词间距不适用于将单词用空白字符分隔的书写系统。

另请参阅:wordSpacing() 和 setLetterSpacing

int QFont::stretch() const

返回字体的拉伸因子。

另请参阅:setStretch

bool QFont::strikeOut() const

如果设置了删除线,则返回 true;否则返回 false

另请参阅:setStrikeOut

QFont::Style QFont::style() const

返回字体的样式。

另请参阅:setStyle

QFont::StyleHint QFont::styleHint() const

返回 StyleHint

样式提示影响 字体匹配算法。有关可用提示的列表,请参阅 QFont::StyleHint

另请参阅:setStyleHintQFont::StyleStrategyQFontInfo::styleHint

QString QFont::styleName() const

返回请求的字体样式名称。这可以用来匹配不规则样式(在其他样式属性中不能被归一化的样式)。

另请参阅:setStyleNamesetFamilysetStyle

QFont::StyleStrategy QFont::styleStrategy() const

返回 StyleStrategy

样式策略会影响字体匹配算法。有关可用策略的列表,请参阅 QFont::StyleStrategy

另请参阅 setStyleStrategy(),setStyleHint(),以及 QFont::StyleHint

[静态] QString QFont::substitute(const QString &familyName)

返回在指定 familyName 时将使用的第一个家族名称。搜索不区分大小写。

如果没有为 familyName 提供替代品,则返回 familyName

要获取替代品列表,请使用 substitutes

另请参阅 setFamily(),insertSubstitutions(),insertSubstitution(),以及 removeSubstitutions

[静态] QStringList QFont::substitutes(const QString &familyName)

返回在指定 familyName 时将使用的家族名称列表。搜索不区分大小写。

如果没有为 familyName 提供替代品,则返回空列表。

另请参阅 substitute(),insertSubstitutions(),insertSubstitution(),以及 removeSubstitutions

[静态] 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

[自 6.7 版起] void QFont::unsetFeature(QFont::Tag tag)

这是一个重载函数。

从显式启用/禁用特征的映射中取消设置 tag

注意:即使以前没有添加此功能,这也将使此 QFont 的字体功能映射标记为已修改,因此在其他字体解析时将具有优先权。

QFont 上取消现有功能将使行为恢复到默认值。

有关字体功能的更多详细信息,请参阅setFeature()。

此功能是在Qt 6.7中引入的。

另请参阅:QFont::TagclearFeaturessetFeaturefeatureTagsfeatureValue

[自 6.7 版起] void QFont::unsetVariableAxis(QFont::Tag tag)

取消通过 tag 设置的之前设置的变量轴值。

注意:如果没有为该标签提供任何值,QFont 仍会在解析其他 QFont 值时考虑其变量轴已设置。

此功能是在Qt 6.7中引入的。

另请参阅:setVariableAxis

[自 6.7 版起] QList<QFont::Tag> QFont::variableAxisTags() const

返回此 QFont 上设置的所有变量轴的标签列表。

有关变量轴的更多详细信息,请参阅setVariableAxis()。

此功能是在Qt 6.7中引入的。

另请参阅:QFont::TagsetVariableAxisunsetVariableAxisisVariableAxisSetclearVariableAxes

[自 6.7 版起] float QFont::variableAxisValue(QFont::Tag tag) const

返回特定变量轴 tag 设置的值。如果未设置该标签,则返回 0.0。

有关变量轴的更多详细信息,请参阅setVariableAxis()。

此功能是在Qt 6.7中引入的。

另请参阅:QFont::TagsetVariableAxisunsetVariableAxisisVariableAxisSetclearVariableAxes

QFont::Weight QFont::weight() const

以与 QFont::Weight 枚举相同的比例返回字体的重量。

另请参阅:setWeightWeightQFontInfo

qreal QFont::wordSpacing() const

返回字体的行距。

另请参阅:setWordSpacingsetLetterSpacing

QVariant QFont::operator QVariant() const

将字体作为 QVariant 返回。

bool QFont::operator!=(const QFont &f) const

如果此字体与 f 不同,则返回 true;否则返回 false

如果两个 QFonts 的字体属性不同,则认为它们是不同的。

另请参阅:operator==

bool QFont::operator<(const QFont &f) const

提供了一个任意比较此字体和字体 f 的函数。保证的是,如果两个字体相等,则算子返回 false,如果字体不相等,则 (f1 < f2) == !(f2 < f1)。

在某些情况下,此函数非常有用,例如,如果您想将 QFont 对象用作 QMap 中的键。

另请参阅operator==()、operator!=() 和 isCopyOf()。

QFont &QFont::operator=(const QFont &font)

font 赋值给当前字体并返回对它的引用。

[noexcept] QFont &QFont::operator=(QFont &&other)

other 移动赋值给此 QFont 实例。

bool QFont::operator==(const QFont &f) const

如果此字体与 f 相等,则返回 true;否则返回 false。

如果两个 QFont 的字体属性相等,则认为它们相等。

另请参阅operator!=() 和 isCopyOf()。

相关非成员函数

[noexcept] size_t qHash(const QFont &font, size_t seed = 0)

返回 font 的哈希值。如果指定,则用 seed 初始化哈希。

QDataStream &operator<<(QDataStream &s, const QFont &font)

将字体 font 写入数据流 s。(toString() 写入文本流。)

另请参阅QDataStream 操作符的格式

QDataStream &operator>>(QDataStream &, QFont &font)

从数据流 s 中读取字体 font。(fromString() 从文本流中读取。)

另请参阅QDataStream 操作符的格式

© 2024 The Qt Company Ltd. 本文档中包含的贡献的版权属于其各自的拥有者。本提供在此的文档是根据 Free Software Foundation 发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 及其标志是芬兰和/或世界其他地区的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。