我有一个带有按钮,TextFields,Labels等的窗口。这些都有共同的属性,如字体系列,颜色,大小等。我希望能够做的是定义这些属性的分组(称为,说, ,textStyles.MainTitle或textStyles.DescriptiveText等),包括字体系列,大小和重量,高度和颜色。然后在QML文件中我会写一些类似的东西:
myCustomProperty: textStyles.MainTitle
这会将这些值应用于控件。我怎么能这样做?
答案 0 :(得分:1)
通过实施各自的样式来设置QML控件的样式,例如,Button
必须实现ButtonStyle
。
对于实际的“分组”,您只需使用QtObject
property QtObject textStyles : QtObject {
property FontLoader mainTitle : FontLoader {...}
....
}
您还可以将样式化组件扩展为专用类型:
// StyledText.qml
Text {
font.family: someFont
font.pixelSize: fontSize
color: someColor
font.italic: true
font.letterSpacing: -1
...
}
然后只使用StyledText {}
而不是重复设计常规Text
元素。
我在哪个/哪个文件中放置QtObject片段?我不明白// StyledText.qml是什么,或者FontLoader是什么。
如果您希望它在整个应用程序中可用,您可以将其作为根对象的属性放在main.qml
中,这要归功于动态范围textStyles
将从您的其他所有文件中解析项目。您也可以将整个组件样式放入其中并在项目中共享。
StyledText.qml
只是您添加到项目中的额外qml文件,您只需在现有qml文件中实现其正文,然后右键单击Text
并选择重构 - >将组件移动到单独的文件中。
FontLoader
只是一个常规QML组件,您可以使用它来加载特定字体并用作文本的字体来源。您不必使用它,您也可以使用系统字体中的字体系列。字体加载器对于与应用程序捆绑在一起的字体非常有用。