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
}
}
}
我正在做 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
}
}
}