C

Qt Quick Ultralite 字体绑定示例

演示如何在新 Quick Ultralite 中编写字体属性的绑定。

概述

本例演示了如何编写字体属性的绑定。绑定支持仅在 Spark Font 引擎使用时可用。该示例的 UI 使用滑动控件来更改文本大小,并使用切换控件来切换文本样式和字形渲染质量。

本例使用了一个 字体映射 文件,该文件定义了以下字体类名称

  • "Roboto"
  • "Roboto Light"
  • "Roboto Italic"

它将 QmlProject 属性 MCU.Config.defaultFontFamily 设置为 "Roboto"。

当绑定重新评估时,字体类名称将更新。有关更多信息,请参阅 字体类映射

Text {
    text: "Hello world"
    // Depending on the 'italicSwitch.checked' value, the font class
    // name can be "Roboto" or "Roboto Italic".
    font.italic: italicSwitch.checked
    font.pixelSize: pixelSizeSlider.value
}

Text {
    text: "from Qt."
    // An alternativele way is to provide a full class name via font.family property.
    font.family: italicSwitch.checked ? "Roboto Italic" : "Roboto"
    font.pixelSize: pixelSizeSlider.value
}

可以通过在具有相同样式的文本项之间共享相同的字体配置 (Text.font) 来优化内存使用。

Text {
    id: lightText
    text: "Hello again world"
    font.pixelSize: pixelSizeSlider.value
    // Depending on the 'lightSwitch.checked' value, the font class
    // name can be "Roboto" or "Roboto Light".
    font.weight: lightSwitch.checked ? Font.Light : Font.Normal
}

Text {
    // To save the memory resources, the font configurations can be shared
    // between elements. This happens automatically in the emitted cpp code
    // when font configuration uses only constant values in font.* bindings.
    font: lightText.font
    text: "from Qt."
}

可以通过进一步降低字体的渲染质量来优化内存使用。使用低质量字形需要在运行时使用更少的内存。将字体的 quality 属性设置为 Font.QualityVeryLow 会生成并渲染 1 位每像素的阿尔法映射,这比 Font.QualityVeryHigh 下的 8 位每像素少。

Text {
    id: qualityText
    text: "Variable glyph quality"
    font: Qt.font({
        pixelSize: pixelSizeSlider.value,
        // Depending on the 'qualitySwitch.checked' value, the font
        // rendering quality changes.
        quality: qualitySwitch.checked ? Font.QualityVeryHigh : Font.QualityVeryLow
    })
}

有关更多信息,请参阅 字体属性 文档。

目标平台

文件

在特定 Qt 许可证下可用。
了解更多。