QML - 如何更改TextField字体大小

3

我该如何在QML中设置TextField元素的字体大小?我想要改变placeholderText和用户输入的文本的字体大小。

我尝试了很多方法,但都没有成功!

TextField {
    id: name_TextField; horizontalAlignment: Text.AlignHCenter;
    Layout.preferredWidth: parentCLayer.width * 0.90; Layout.preferredHeight: 50
    style: TextFieldStyle {
        font.pixelSize: 20  // This doesn't seem to work either
    }
    placeholderText: qsTr("Your name here")
}
2个回答

4
您可以使用style属性来自定义您的TextField。例如:
TextField {
    style: TextFieldStyle {
        font.pixelSize: 14
    }
}

我尝试了它,效果非常好。


奇怪,你能告诉我你的 QML 文件中的 import 语句是什么吗? - Alaa Salah
当然, import QtQuick.Controls 1.2import QtQuick.Controls.Styles 1.2我使用的是Qt 5.3.1。 - folibis
这个确实可以工作,尽管IDE会用错误提示标记font引用: "font"没有成员。(M17) - MusiGenesis

2

使用TextFieldfont成员

TextField类型本身有一个成员font,其中包含QML基本类型font的实例。只需更改TextFieldfont成员的内部成员的值即可看到所需的更改。请注意,颜色由TextField本身提供,而不是字体类型。

TextField {
    font.pointSize: 20
    font.bold: true
    font.family: "Times New Roman"
    textColor: "red"
}

默认样式

Default TextField style

自定义样式

TextField style in 20pt, bold Times New Roman.

使用TextFieldstyle成员

如果您想对TextField进行更深入的样式设置,可以将TextFieldStyle附加到TextFieldstyle成员上。 TextFieldStyle实例还具有font成员,尽管在IDE中,如果您使用点符号引用它们,它会抱怨font没有成员,这可能是一个bugQTCREATORBUG-11186。我认为分配值的正确方法是使用组符号,通过引用内部项目来引用font属性:

TextField {
    style: TextFieldStyle {
        background: Rectangle {
            color: "red"
            radius: 10
        }
        font {
            bold: true
            pointSize: 22
        }
        textColor: "white"
    }
}

可能Bug #11186是真正的Bug,或者也许在TextFieldStyle中font属性是null,对于问题的这一部分,具有更好的Qt/QML知识的人可以提供更清晰的答案。
这份关于样式的指南可能会有所帮助:http://wiki.qt.io/Qml_Styling

1
我认为在Qt6中使用style已经过时了,对于这个和许多其他QML组件来说都是如此。使用这里提到的font成员是正确的方法。 - SCP3008

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接