QFontDatabase类提供有关基础窗口系统中可用字体的信息
头文件
#include <QFontDatabase>
cmake:
find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake:
QT += gui
注意:此类中的所有函数都是线程安全的。
详细说明
此类的最常见用法是在数据库中查询字体系列(families)的列表以及每个系列可用的pointSizes()和样式()。以另一种pointSizes)(是smoothSizes()返回在一个给定的系列和风格将看起来有吸引力的大小。
如果字体族可以从两个或更多的铸造厂获得,则铸造厂名称包含在家族名称中;例如:“Helvetica [Adobe]”和“Helvetica [Cronyx]”。当您指定一个族时,您可以使用旧的连字符"foundry-family"格式或括号内的"family [foundry]"格式;例如:“Cronyx-Helvetica”或“Helvetica [Cronyx]”。如果family有一个foundry,它总是使用括起来的格式返回,就像families()返回的值一样。
font()
函数的作用是:返回给定系列、样式和点大小的QFont。
可以检查family和style组合,看看它是斜体italic
()还是粗体bold
(),并检索它的weight()。类似地,我们可以调用isBitmapScalable()、isSmoothlyScalable()、isScalable()和isFixedPitch()
例子:
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());
}
}
本示例获取字体系列列表,每个系列的样式列表以及每个系列和样式组合可用的磅值,并在树形视图中显示此信息。
另请参见QFont,QFontInfo,QFontMetrics和字符映射示例。
成员类型
SystemFont
[since 5.2]
enum QFontDatabase::SystemFont
这个枚举是在Qt 5.2中引入或修改的。
WritingSystem
enum QFontDatabase::WritingSystem
成员函数
addApplicationFont
从文件名指定的文件中加载字体,并使其对应用程序可用。返回一个ID,可以使用removeApplicationFont()再次删除字体,或者检索字体中包含的家族名称列表。
如果无法加载字体,函数将返回-1。
目前只支持TrueType字体、TrueType字体集合和OpenType字体。
注意:在Unix/X11平台上添加没有fontconfig的应用字体目前是不支持的。
另请参见:addApplicationFontFromData(), applicationFontFamilies(), removeApplicationFont().
例子:-
if (QFontDatabase::addApplicationFont("://font/DejaVuSans.ttf") == -1) {
qWarning() << "Couldn't load font";
}