QFontDatabase类

QFontDatabase类提供有关底层窗口系统中可用的字体的信息。更多...

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

注意:本类中所有函数均为线程安全

公共类型

枚举SystemFont { GeneralFont, FixedFont, TitleFont, SmallestReadableFont }
枚举WritingSystem { Any, Latin, Greek, Cyrillic, Armenian, …, Nko }

静态公共成员

intaddApplicationFont(const QString &fileName)
intaddApplicationFontFromData(const QByteArray &fontData)
QStringListapplicationFontFamilies(int id)
boolbold(const QString &family, const QString &style)
QStringListfamilies(QFontDatabase::WritingSystem writingSystem = Any)
QFontfont(const QString &family, const QString &style, int pointSize)
boolisBitmapScalable(const QString &family, const QString &style = QString())
boolisFixedPitch(const QString &family, const QString &style = QString())
boolisPrivateFamily(const QString &family)
boolisScalable(const QString &family, const QString &style = QString())
boolisSmoothlyScalable(const QString &family, const QString &style = QString())
boolitalic(const QString &family, const QString &style)
QList<int>pointSizes(const QString &family, const QString &styleName = QString())
boolremoveAllApplicationFonts()
boolremoveApplicationFont(int id)
QList<int>smoothSizes(const QString &family, const QString &styleName)
QList<int>standardSizes()
QStringstyleString(const QFont &font)
QStringstyleString(const QFontInfo &fontInfo)
QStringListstyles(const QString &family)
QFontsystemFont(QFontDatabase::SystemFont type)
intweight(const QString &family, const QString &style)
QStringwritingSystemName(QFontDatabase::WritingSystem writingSystem)
QStringwritingSystemSample(QFontDatabase::WritingSystem writingSystem)
QList<QFontDatabase::WritingSystem>writingSystems()
QList<QFontDatabase::WritingSystem>writingSystems(const QString &family)

详细描述

此类的最常见用法是查询数据库获取字体家族()的列表,以及每个家族可用的点大小()和样式()。pointSizes()的替代方案是smoothSizes(),它会返回在给定家族和样式中看起来吸引人的大小。

如果字体家族可以从两个或更多铸造厂获取,则在家族名称中包含铸造厂名称;例如:“Helvetica [Adobe]”和“Helvetica [Cronyx]”。当您指定家族时,您可以使用旧的连字符“foundry-family”格式或括号“family [foundry]”格式;例如:“Cronyx-Helvetica”或“Helvetica [Cronyx]”。如果家族有铸造厂,则始终使用括号格式返回,就像返回给families()的值一样。

font()函数给定了家族、样式和点大小,返回一个QFont

可以检查家族和样式的组合是否为斜体()或粗体(),并检索其权重。同样,我们可以调用isBitmapScalable(),isSmoothlyScalable(),isScalableisFixedPitch

使用styleString()来获取样式的文本版本。

QFontDatabase类提供了一些辅助函数,例如standardSizes()。您可以使用writingSystemName()获取书写系统的描述,并使用writingSystemSample()获取书写系统中字符的样本。

示例

QTreeWidget fontTree;
fontTree.setColumnCount(2);
fontTree.setHeaderLabels(QStringList() << "Font" << "Smooth Sizes");

const QStringList fontFamilies = QFontDatabase::families();
for (const QString &family : fontFamilies) {
    QTreeWidgetItem *familyItem = new QTreeWidgetItem(&fontTree);
    familyItem->setText(0, family);

    const QStringList fontStyles = QFontDatabase::styles(family);
    for (const QString &style : fontStyles) {
        QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem);
        styleItem->setText(0, style);

        QString sizes;
        const QList<int> smoothSizes = QFontDatabase::smoothSizes(family, style);
        for (const auto &points : smoothSizes)
            sizes += QString::number(points) + ' ';

        styleItem->setText(1, sizes.trimmed());
    }
}

此示例获取字体家族列表、每个家族的样式列表以及家族和样式组合的点大小列表,并在树视图中显示这些信息。

另请参阅QFontQFontInfoQFontMetrics

成员类型文档

enum QFontDatabase::SystemFont

常数描述
QFontDatabase::GeneralFont0默认系统字体。
QFontDatabase::FixedFont1系统推荐的固定字体。
QFontDatabase::TitleFont2系统标准标题字体。
QFontDatabase::SmallestReadableFont3可读性最小的系统字体。

enum QFontDatabase::WritingSystem

常数描述
QFontDatabase::Any0 
QFontDatabase::Latin1 
QFontDatabase::Greek2 
QFontDatabase::Cyrillic3 
QFontDatabase::Armenian4 
QFontDatabase::Hebrew5 
QFontDatabase::Arabic6 
QFontDatabase::Syriac7 
QFontDatabase::Thaana8 
QFontDatabase::Devanagari9 
QFontDatabase::Bengali10 
QFontDatabase::Gurmukhi11 
QFontDatabase::Gujarati12 
QFontDatabase::Oriya13 
QFontDatabase::Tamil14 
QFontDatabase::Telugu15 
QFontDatabase::Kannada16 
QFontDatabase::Malayalam17 
QFontDatabase::Sinhala18 
QFontDatabase::Thai19 
QFontDatabase::Lao20 
QFontDatabase::Tibetan21 
QFontDatabase::缅甸22 
QFontDatabase::格鲁吉亚23 
QFontDatabase::柬埔寨24 
QFontDatabase::简体中文25 
QFontDatabase::繁体中文26 
QFontDatabase::日语27 
QFontDatabase::韩语28 
QFontDatabase::越南语29 
QFontDatabase::符号30 
QFontDatabase::其他符号(与符号相同)
QFontDatabase::奥甘字母31 
QFontDatabase::鲁尼字母32 
QFontDatabase::纳科33 

成员函数文档

[静态] int QFontDatabase::addApplicationFont(const QString &fileName)

加载由 fileName 指定的文件中的字体,并将其提供给应用程序。返回一个 ID,可用于通过 removeApplicationFont() 删除字体,或检索字体中包含的字体名称列表。

如果无法加载字体,函数返回 -1。

目前仅支持 TrueType 字体、TrueType 字体集合和 OpenType 字体。

另请参阅 addApplicationFontFromData()、applicationFontFamilies() 和 removeApplicationFont()。

[静态] int QFontDatabase::addApplicationFontFromData(const QByteArray &fontData)

从由 fontData 指定的二进制数据中加载字体,并将其提供给应用程序。返回一个 ID,可用于通过 removeApplicationFont() 再次删除字体或检索字体中包含的字体名称列表。

如果无法加载字体,函数返回 -1。

目前仅支持 TrueType 字体、TrueType 字体集合和 OpenType 字体。

另请参阅 addApplicationFont()、applicationFontFamilies() 和 removeApplicationFont()。

[静态] QStringList QFontDatabase::applicationFontFamilies(int id)

返回由 id 标识的应用程序字体的字体家族列表。

另请参阅 addApplicationFont() 和 addApplicationFontFromData()。

[静态] QString QFontDatabase::bold(const QString &family, const QString &style)

如果具有 family 家族和 style 风格的字体是粗体,则返回 true;否则返回 false

另请参阅 italic() 和 weight()。

[静态] QStringList QFontDatabase::families(QFontDatabase::WritingSystem writingSystem = Any)

返回支持 writingSystem 的可用字体家族的排序列表。

如果某个家族存在于多个字体库中,返回的该字体名称将采用 "family [foundry]" 的形式。示例: "Times [Adobe]"、"Times [Cronyx]"、 "Palatino"。

另请参阅 writingSystems()。

[静态] QFont QFontDatabase::font(const QString &family, const QString &style, int pointSize)

返回一个具有字体族 family、样式 style 和点大小 pointSizeQFont 对象。如果无法创建匹配的字体,则返回一个使用应用程序默认字体的 QFont 对象。

[静态] bool QFontDatabase::isBitmapScalable(const QString &family, const QString &style = QString())

如果具有字体族 family 和样式 style 的字体是可缩放位图字体,则返回 true;否则返回 false。缩放位图字体通常会产生难以阅读的结果,因为字体的像素被缩放。如果您需要缩放位图字体,最好将其缩放到 smoothSizes() 返回的固定尺寸之一。

参见 isScalable() 和 isSmoothlyScalable

[静态] bool QFontDatabase::isFixedPitch(const QString &family, const QString &style = QString())

如果具有字体族 family 和样式 style 的字体是等宽字体,则返回 true;否则返回 false

[静态] bool QFontDatabase::isPrivateFamily(const QString &family)

如果且仅当字体族 family 是私有字体时,返回 true

例如,在 macOS 和 iOS 上,系统 UI 字体对用户不可用。为了完整性,QFontDatabase::families() 返回所有字体族,包括私有字体。如果您正在开发字体选择控件,则应使用此函数以隐藏私有字体。

参见 families

[静态] bool QFontDatabase::isScalable(const QString &family, const QString &style = QString())

如果具有字体族 family 和样式 style 的字体是可缩放字体,则返回 true;否则返回 false

参见 isBitmapScalable() 和 isSmoothlyScalable

[静态] bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &style = QString())

如果具有字体族 family 和样式 style 的字体是平滑可缩放的,则返回 true;否则返回 false。如果此函数返回 true,则可以安全地将此字体缩放到任何大小,并且结果始终看起来很吸引人。

参见 isScalable() 和 isBitmapScalable

[静态] bool QFontDatabase::italic(const QString &family, const QString &style)

如果具有family字体和style样式的字体是斜体,则返回true;否则返回false

另请参阅weight()和bold

[静态] QList<int> QFontDatabase::pointSizes(const QString &family, const QString &styleName = QString())

返回适合具有family字体和styleName样式的字体的点大小列表。列表可能为空。

另请参阅smoothSizes()和standardSizes

[静态] bool QFontDatabase::removeAllApplicationFonts()

删除之前使用addApplicationFont()和addApplicationFontFromData()添加的所有应用程序本地字体。

如果字体卸载成功,则返回true;否则返回false

另请参阅removeApplicationFontaddApplicationFontaddApplicationFontFromData

[静态] bool QFontDatabase::removeApplicationFont(int id)

删除通过id标识的先前加载的应用程序字体。如果字体卸载成功,则返回true;否则返回false

另请参阅removeAllApplicationFontsaddApplicationFontaddApplicationFontFromData

[静态] QList<int> QFontDatabase::smoothSizes(const QString &family, const QString &styleName)

返回具有family字体和styleName样式的点大小,该点大小看起来很吸引人。列表可能为空。对于不可缩放字体和位图可缩放字体,此函数与pointSizes等效。

另请参阅pointSizesstandardSizes

[静态] QList<int> QFontDatabase::standardSizes()

返回标准字体大小的列表。

另请参阅smoothSizespointSizes

[静态] QString QFontDatabase::styleString(const QFont &font)

返回描述font样式的字符串。例如,“Bold Italic”、“Bold”、“Italic”或“Normal”。可能会返回空字符串。

[静态] QString QFontDatabase::styleString(const QFontInfo &fontInfo)

返回描述fontInfo样式的字符串。例如,“加粗斜体”,“加粗”,“斜体”或“常规”。可能返回空字符串。

[静态] QStringList QFontDatabase::styles(const QString &family)

返回可用于字体族family的样式列表。一些示例样式:“轻”, “轻斜体”, “加粗”, “倾斜”, “半粗”。列表可能为空。

参见 families

[静态] QFont QFontDatabase::systemFont(QFontDatabase::SystemFont type)

返回最适合给定type情况的字体,以便与系统的外观和感觉良好集成。

另请参阅QGuiApplication::font

[静态] int QFontDatabase::weight(const QString &family, const QString &style)

返回具有familystyle样式的字体的重量。如果没有此类家族和样式组合,则返回-1。

另请参阅italic() 和 bold()。

[静态] QString QFontDatabase::writingSystemName(QFontDatabase::WritingSystem writingSystem)

返回writingSystem的名称(例如,在对话框中显示给用户)。

[静态] QString QFontDatabase::writingSystemSample(QFontDatabase::WritingSystem writingSystem)

返回来自writingSystem的示例字符字符串。

[静态] QList<QFontDatabase::WritingSystem> QFontDatabase::writingSystems()

返回可用书写系统的有序列表。这是根据系统上安装的所有字体的信息生成的列表。

参见 families

[静态] QList<QFontDatabase::WritingSystem> QFontDatabase::writingSystems(const QString &family)

返回支持给定字体family的书写系统的有序列表。

参见 families

© 2024 Qt公司有限公司。此处包含的文档贡献的版权为各自所有者的版权。此处提供的文档根据自由软件基金会发布的GNU自由文档许可协议版本1.3的条款进行许可。Qt及相应标志是芬兰以及/或世界各地Qt公司有限责任公司的商标。所有其他商标均为各自所有者的财产。