Qt扫盲-QFontDatabase理论

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()。

Qt扫盲-QFontDatabase理论_第1张图片

我们可以使用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());
          }
}

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

你可能感兴趣的:(#,▶,Qt扫盲,QFontDatabase,QFontDatabase理论,Qt字体库,qt5)