欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt qml TextField TextInput等文本输入控件中validator属性的设置

程序员文章站 2024-01-04 21:32:46
...

一 环境

桌面系统: Ubuntu16.04  32位

Qt版本:5.5.1


二 限制输入框只输入数字(通过设置 validator)

1  IntValidator 

作用:限制输入的内容为整数,通过bottom和top值来设置输入范围;

例子: (直接贴qt官网的例子)

TextInput{
    validator: IntValidator{bottom: 11; top: 31;}
    focus: true
}
解读:限制该输入框只可以输入11~31之间的整数


2 DoubleValidator

作用:限制输入的内容为浮点数,通过bottom和top 来设置输入范围, 通过decimals 来设置小数位个数;


TextInput{
    validator: DoubleValidator{id:rdecimal; decimals: 2; bottom: 1.00; top: 20.00 ;notation:DoubleValidator.StandardNotation} 
    focus: true
}
解读:限制小数位位数为2位,输入值范围 1.00~20.00 ,使用标准表示法,(根据需要还可设置成科学表示法)

缺点:输入范围外的值也能正常输入,只是无效而已, 所以对于只输入数字建议使用 SpinBox 控件

RegExpValidator

1作用:使用正则表达式来验证输入 ,功能强大,但比较复杂;

2简单例子

TextInput{
    validator: RegExpValidator { regExp: /^\d+(\.\d{0,3})?$/ }  
    focus: true
}
解读:以数字开头,数量不限,小数位位数0~3,小数位可有可无 ;


3动态正表达式

实现方法:使用构造函数

        Row{
            spacing: 5
            TextField{
                id:tfdata
                text: "0"
                validator: RegExpValidator{id:regexp ; regExp: /^\d+(\.\d{0,1})?$/ }
            }
            
            TextField{
                id:tfdecimal
                text: "0"
                validator: IntValidator{ bottom: 0;top:20}  //限制整型值 0~20
            }
            Button{
                id:bsetdecimal
                text: qsTr("confirme")
                onClicked: {
                    var reg = new RegExp("^\\d+(\\.\\d{0,"+ tfdecimal.text + "})?$") //注意:对于\需要用\\表示
                    regexp.regExp = reg
                }
            }
        }
操作:在tfdecimal输入框中输入3,然后点击 按钮即可将 tfdata输入框的小数位从原来的1位变成了3位;

重点在Button 中 onClicked事件的处理;






上一篇:

下一篇: