1.使用正则表达式检验QLineEdit的输入范围(代码如下):
#include <qvalidator.h>
#include <qlineedit.h>
QLineEdit *lineEdit = new QLineEdit(this);
QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}"); //^[1-9][0-9]*$ 和 ^[1-9]{1}[/d]*$
//上面的正则表达式表示只能输入大于0的正整数
lineEdit->setValidator(new QRegExpValidator(regExp, this));
#####或者用这个
QLineEdit只输入字母和数字 收藏
QRegExp regx("[a-zA-Z0-9]+$");
QValidator *validator = new QRegExpValidator(regx, lined );
ui->lined->setValidator( validator );
2.使用 QIntValidator 整型数验证控件控制QLineEdit的输入范围(代码如下):
#include <qvalidator.h>
#include <qlineedit.h>
QValidator* validator = new QIntValidator( 100, 999, this );
QLineEdit* edit = new QLineEdit( this );
// 只允许 edit 输入整数 100 到 999
edit->setValidator( validator );
lineedit = QLineEdit() 实例化一个输入框
lineedit =setReadOnly(True) #设置为只读
lineedit.setDragEnabled(True) #设置能接受拖放
lineedit.setMaxLength(5) #设置最大长度
lineedit.selectAll() #全选
lineedit.setFocus() #得到焦点
lineedit.setInputMask("dx") #设置修饰 该输入框必须输入两个字符
punctuationRe = QRegExp(r"[ ,;:.]") #得到一个regexp对象 可用下面的验证
lineedit.setValidator(QRegExpValidator(QRegExp(r"[0-9]+")),self) #设置验证 检验用户输入内容
lineedit.emit(SIGNAL('textChanged(QString)')) 发出 信号 (设置为只读时貌似发不出 没有具体测试)
lineedit.emit(SIGNAL(textEdited(QString)')) 发出 信号 如果设置了验证 该信号在通过验证才能发出 (设置为只读时貌似发不出 没有具体测试)
在使用QLineEdit输入数值时,经常遇到限制其范围的需要,比如角太阳高度角范围为[-90,90],经度值范围[-180,180],方位角范围[0,360]。Qt提供了QIntValidator和QDoubleValidator可以限定数值输入范围,如使用QIntValidator限制整数的数值范围:
例1:
[cpp] view plaincopy
例2:
[cpp] view plaincopy
对于浮点数,使用QDoubleValidator时,发现只能限制只输入小数,但是无法设定数值范围,因此有必要对这个问题做一番研究。
除了QIntValidator和QDoubleValidator,Qt提供另一种校验器是正则表达式校验器:QRegExpValidator,下面是一些常用的利用正则表达式校验器限定数值范围的用法:
限制浮点数输入范围为[-999999.9999,999999.9999]
[cpp] view plaincopy
限制浮点数输入范围为[-180,180]
[cpp] view plaincopy
限制浮点数输入范围为[-180,180]
[cpp] view plaincopy
限制浮点数输入范围为[-180,180]并限定为小数位后4位
[cpp] view plaincopy
限制浮点数输入范围为[-90,90]并限定为小数位后4位
[cpp] view plaincopy
简单说明一下这几个正则表达式:
^(-?[0]|-?[1-9][0-9]{0,5})(?:\.\d{1,4})?$|(^\t?$)
(^-?180$)|(^-?1[0-7]\d$)|(^-?[1-9]\d$)|(^-?[1-9]$)|^0$
^-?(180|1?[0-7]?\d(\.\d+)?)$
^-?(180|1?[0-7]?\d(\.\d{1,4})?)$
^-?(90|[1-8]?\d(\.\d{1,4})?)$
有了以上知识,下面我们可以很快的写出限定[-255,255]的正则表达式:
[-255,255]整数:^-?(255|[1,2]?[0-4]?\d|[1,2]?5[0-4]?)$
[-255,255]小数:^-?(255|([1,2]?[0-4]?\d|[1,2]?5[0-4]?)(\.\d)?)$
参考:
[1]Qt限制文本框输入的方法