Qt/QML: 如何根据验证器找到 TextInput 最大宽度

Qt/QML: how to find TextInput maximum width based on validator

我正在做 QML 的第一步,所以这可能是显而易见的... 当使用带有简单验证器(比如 IntValidator)的 TextInput 时,有没有办法知道 TextInput 字段将采用的最大宽度? 例如,如果我为 0 到 999 之间的数字创建一个 IntValidator,我想找到显示该 999 所需的宽度(或根据字体等选择最宽的那个)。 我正在尝试将该文本输入包装到一个具有固定大小的项目中,该项目的大小恰好适合最坏情况下的输入,仅此而已? 谢谢

使用TextMetrics:

import QtQuick 2.9
import QtQuick.Controls 2.2

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    TextMetrics {
        id: textMetrics
        font: textField.font
        text: "999"
    }

    TextField {
        id: textField
        width: textMetrics.width + leftPadding + rightPadding
        validator: IntValidator {
            bottom: 0
            top: 999
        }
    }
}