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。当我看到它的时候已经太晚了。