我有一个通过 QML 文件指定的小部件。此小部件包含顶级 Rectangle
包含两个 Columns
。这些 Columns
中的每一个都包含许多 Text
元素。这个 QML 小部件包装在 C++ 中 QDeclarativeView
的子类中。
我想为这些 Text
元素中的每一个指定字体。今天我通过指定顶级属性来做到这一点:
property string fontfamily: "Arial"
property bool fontbold: false
property bool fontitalic: false
property int fontpixelsize: 11
property string fontcolor: "White"
并将每个 Text
元素绑定到这些属性:
Text
{
color: fontcolor
font.family: fontfamily
font.bold: fontbold
font.italic: fontitalic
font.pixelSize: fontpixelsize
...
}
这不是很优雅,每次我需要支持新的东西(例如带下划线的字体)时都需要添加新的字段。我无法声明 font
类型的属性并改为绑定到此属性(小部件为空白,qmlviewer 警告“属性后的预期类型”)。
有没有更好的方法来为所有 Text
元素指定字体?
笔记!我正在手写 QML 文件。
原文由 larsmoa 发布,翻译遵循 CC BY-SA 4.0 许可协议
另一种可能性是编写一个新的 QML 组件,它继承自
Text
默认设置一些属性:StyledText.qml
main.qml