检测TextField中的文本内容大小

时间:2015-06-26 14:46:57

标签: qt qml qtquick2

如果用户在TextField中输入长文本,我想减小字体大小。有没有办法知道当前文本的渲染范围?

1 个答案:

答案 0 :(得分:1)

据我所知,不可能直接做。但是,您可以通过使用包含所需属性的不可见项来作弊:

Text {
    id: hiddenText
    anchors.fill: tf
    text: tf.text
    font.pixelSize: tf.font.pixelSize
    visible: false
}

TextField {
    id: tf
    width: 100
    height: 60
    font.pixelSize: 25
    onTextChanged: {
        while ((hiddenText.contentWidth > hiddenText.width) || (hiddenText.contentHeight > hiddenText.height)) {
            font.pixelSize -= 1
        }
    }
}

如果用户删除某些输入,您必须对缩放文本执行相同的操作。 Text组件不包含边框,因此您必须将其width减少几个像素,以使其与TextField的大小相同。

另外,请查看TextAreaTextInput。它们可能符合您的需求。