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

Posted

技术标签:

【中文标题】Qt/QML:如何根据验证器找到 TextInput 最大宽度【英文标题】:Qt/QML: how to find TextInput maximum width based on validator 【发布时间】:2018-07-15 04:38:39 【问题描述】:

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

【问题讨论】:

请提供mcve 【参考方案1】:

使用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
        
    

【讨论】:

以上是关于Qt/QML:如何根据验证器找到 TextInput 最大宽度的主要内容,如果未能解决你的问题,请参考以下文章

Qt/Qml:如何包含地图瓦片以供离线使用?

如何在 Qt QML 中处理 mac 集成 About MenuBar 项?

Qt/QML:std::vector<int> 处理

Qt/QML:如何在 QML 中双向同步 ScrollView?

在没有 Canvas 的 QML 中绘制虚线圆

Qt QML:限制最大FPS