在QML中,我希望能够为简单的语义重用定义一组字体属性.例如,而不是:
Text {
text: "This is a header"
font { family:'Encode Sans'; weight:Font.Black; italic:false; pointSize:24 }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够写:
Text {
text: "This is a header"
font: headerFont
}
Run Code Online (Sandbox Code Playgroud)
如何创建一个font我可以分配的单个值?
我知道我做了一个组件,比如:
# Header.qml
Text {
font { family:'Encode Sans'; weight:Font.Black; italic:false; pointSize:24 }
}
# main.qml
Header { text:"This is a header" }
Run Code Online (Sandbox Code Playgroud)
但是,当我想Label在font需要a的地方或其他地方使用相同的字体设置时,这不起作用.
我也知道我可以使用这个问题的答案,例如:
// style.js
.pragma library
var header = {
family: 'Encode Sans',
weight: Font.Black, // is this legal?
italic: false,
size: 24
};
Run Code Online (Sandbox Code Playgroud)
// main.qml
import "style.js" as Style
Text {
text: "This is a header"
font {
family: Style.header.family
weight: Style.header.weight
italic: Style.header.italic
pointSize: Style.header.size
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这确实是单一来源的,但如图所示,它是非常冗长的.
我试过这个......
Font {
id: header
family: 'Encode Sans'
weight: Font.Black
italic: false
pointSize: 24
}
Text {
text: "This is a header"
font: header
}
Run Code Online (Sandbox Code Playgroud)
...但它的错误是"元素不可创造" Font {.
Phr*_*ogz 14
这个答案正是我所需要的.我可以使用Qt.font()方法来创建具有我需要的属性的字体值.包含在具有全局ID的QtObject中,我可以:
### main.qml
QtObject {
id: theme
property font headerFont: Qt.font({
family: 'Encode Sans',
weight: Font.Black,
italic: false,
pointSize: 24
})
}
### AnyOther.qml
Text {
text: "This is a header"
font: theme.headerFont
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3088 次 |
| 最近记录: |