QML 设置字体大小写

Posted

技术标签:

【中文标题】QML 设置字体大小写【英文标题】:QML set font capitalization 【发布时间】:2021-05-20 08:20:25 【问题描述】:

我正在编写一个可重用的字体属性,如 here 和 here 所述。 这是我的财产

property font button2: Qt.font(
    family: defaultFont.name,
    styleName: "Bold",
    pointSize: 16
)

这里是我如何使用它,它工作正常

    Text 
        text: "button"
        font: MyFont.button2
    

现在我将添加大写,但将其添加到这样的属性中

property font button2: Qt.font(
    family: defaultFont.name,
    styleName: "Bold",
    capitalization: "AllUppercase",
    pointSize: 16
)

它根本没有效果。如果我将其添加到文本组件中

    Text 
        text: "button"
        font: MyFont.button2
        font.capitalization: Font.AllUppercase
    

它给了我一个“属性已被赋值”错误。

我该怎么做?

【问题讨论】:

【参考方案1】:

如果要更改大小写,则必须在 Component.onCompleted 中使用它:

Text 
    text: "button"
    font: MyFont.button2
    // font.capitalization: Font.AllUppercase
    Component.onCompleted: font.capitalization = Font.AllUppercase

【讨论】:

我想过,但我觉得这是一种解决方法,而不是正确的方法。居然没有别的办法? @Moia 不,没有办法。实现你的逻辑:绑定不是顺序的,即“N”行上的属性没有在“N+1”行之前执行,可能也可能不会。 你是说我不能把它放在 Qt.font() 函数中,因为绑定应该在对象构建之后发生?

以上是关于QML 设置字体大小写的主要内容,如果未能解决你的问题,请参考以下文章

c# treeview 字体大小

手机怎么设置字体的大小?

QML 以像素为单位获取默认字体高度值

怎么设置字体的大小?

rose设置字体大小

设置安卓字体大小,不跟随系统