QFontDatabase理论
- 一、概述
- 二、常用功能
一、概述
QFontDatabase 类提供有关底层窗口系统中可用字体的信息。
这个类最常见的用途是查询数据库中的字体系列列表()以及每个系列可用的 pointSizes() 和 styles()。pointSizes() 的另一种替代方法 是smoothSizes(),它返回给定的字体族和风格看起来有吸引力的大小。
如果字体系列可从两个或两个以上的字体工厂获得,则字体工厂名称包括在字体系列名称中;例如:“Helvetica [Adobe]”和“Helvetica [cronix]”。当你指定一个家族时,你可以使用旧的以连字符连接的 “foundry-family” 格式,也可以使用带括号的 “family [foundry]” 格式;;例如:“Cronyx-Helvetica” 或 “Helvetica [Cronyx]”。
如果家族有一个字体工厂,它总是使用括号格式返回,就像families()返回值的情况一样。
font() 函数的作用是:返回给定字体族、样式和字体点大小的QFont。
可以检查family和style组合,看看它是斜体(italic)还是粗体(bold),并检索它的权重(weight)。类似地,我们可以调用isBitmapScalable(), isSmoothlyScalable(), isScalable()和isFixedPitch()。
使用styleString()获取样式的文本版本。返回的就是 “Bold Italic”, “Bold”, “Italic” 或者 “Normal” 这种形式的。
二、常用功能
QFontDatabase类还支持一些静态函数,例如standardSizes()。
我们可以使用writingSystemName()检索书写系统的描述,并使用writingSystemSample()检索书写系统中的字符样本。
例子:
QFontDatabase database;
QTreeWidget fontTree;
fontTree.setColumnCount(2);
fontTree.setHeaderLabels(QStringList() << "Font" << "Smooth Sizes");
const QStringList fontFamilies = database.families();
for (const QString &family : fontFamilies) {
QTreeWidgetItem *familyItem = new QTreeWidgetItem(&fontTree);
familyItem->setText(0, family);
const QStringList fontStyles = database.styles(family);
for (const QString &style : fontStyles) {
QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem);
styleItem->setText(0, style);
QString sizes;
const QList<int> smoothSizes = database.smoothSizes(family, style)
for (int points : smoothSizes)
sizes += QString::number(points) + ' ';
styleItem->setText(1, sizes.trimmed());
}
}
这个示例获取字体系列列表、每个系列的样式列表,以及每种系列和样式组合可用的点大小,并在树视图中显示这些信息。