Qml 使用动态字体大小固定宽度标签
是否有一种级联方式可以获得给定文本的字体大小和固定宽度 我试着:Qml 使用动态字体大小固定宽度标签,qml,blackberry-10,blackberry-cascades,Qml,Blackberry 10,Blackberry Cascades,是否有一种级联方式可以获得给定文本的字体大小和固定宽度 我试着: TextField{ autoFit:TextAutoFit.fitBounds } 但文本始终显示为左对齐。要求在固定矩形中使用可变字号标签渲染将文本居中对齐。如果只想将文本居中对齐,则需要使用textStyle.textAlign属性,如下所示: textStyle.textAlign:textAlign.Center 为了使文本居中对齐,以固定矩形呈现可变字体大小的标签,基本上,您需要为标签指定所需的矩形宽度和高度使用上
TextField{
autoFit:TextAutoFit.fitBounds
}
但文本始终显示为左对齐。要求在固定矩形中使用可变字号标签渲染将文本居中对齐。如果只想将文本居中对齐,则需要使用
textStyle.textAlign
属性,如下所示:
textStyle.textAlign:textAlign.Center
为了使文本居中对齐,以固定矩形呈现可变字体大小的标签,基本上,您需要为标签指定所需的矩形宽度和高度使用上面提到的textStyle.textAlign
属性,并通过相应的textStyle.fontSize
标签属性选择字体大小。文本对齐将通过级联
自动完成(当然,如果您的文本无法适应指定的宽度/高度,它将被截断):
导入bb.cascades 1.0
页面{
容器{
布局:DockLayout{}
水平对齐:水平对齐。填充
垂直对齐:垂直对齐。填充
标签{
水平对齐:水平对齐。居中
垂直对齐:垂直对齐。中心
最大宽度:300
minWidth:maxWidth
最大高度:100
最小高度:最大高度
多行:正确
文本:“这里有一些很长的文本”
textStyle.textAlign:textAlign.Center
textStyle.fontSize:fontSize.XLarge
}
}
}
我建议采用这种方法来实现设定的目标
但是,如果您真的想获得小部件中使用的字体的绝对值,请为此(官方文档)使用textStyle.fontSize
属性。目前BB10级联中没有字体度量,因此您无法找出字体是否不适合标签并调整其大小
您可以使用layoutUpdateHandler进行一些粗略的调整,但我不推荐这样做。如果文本经常更改,您将看到闪烁,但如果只设置一次,则可能没有问题。更改“onCreationCompleted”中的文本集,以查看文本大小是否适合您
Container {
id: root
implicitLayoutAnimationsEnabled: false
background: Color.Cyan
property int width: 500
property string text: ""
property double textSize: 20
layout: DockLayout {
}
attachedObjects: [
LayoutUpdateHandler {
onLayoutFrameChanged: {
if (layoutFrame.width > root.width) {
root.textSize = root.textSize - 1
}
}
}
]
Label {
implicitLayoutAnimationsEnabled: false
maxWidth: root.width
text: root.text
textStyle {
fontSize: FontSize.PointValue
fontSizeValue: root.textSize
}
}
Label {
implicitLayoutAnimationsEnabled: false
text: root.text
opacity: 0
textStyle {
fontSize: FontSize.PointValue
fontSizeValue: root.textSize
}
}
onCreationCompleted: {
root.text = "Hello World AAAAAAAA"
}
}
感谢您的回复,但是标签应该减少“非常长的文本”的字体大小以适合内容。另外,“textStyle.fontSize”将始终返回创建widget.Ugg时设置的字体大小。对不起,打错了。我不是故意投反对票的,Sunseeker。当我看到它的时候已经太晚了。