QLineEdit格式化输入

QLineEdit是一个单行文本编辑控件。通过改变QLineEdit的 echoMode() ,可以设置其属性,比如以密码的形式输入。可以通过使用 validator() 或者 inputMask() 可以限制它只能输入数字。

文本改变时会发出 textChanged() 信号;如果不是由setText()造成文本的改变,那么会发出textEdit()信号;鼠标光标改变时会发出cursorPostionChanged()信号;当返回键或者回车键按下时,会发出returnPressed()信号。当编辑结束,或者LineEdit失去了焦点,或者当返回/回车键按下时,editFinished()信号将会发出。

QLineEdit 接收用户输入

显示模式 效果
QLineEdit::Normal 正常显示
QLineEdit::NoEcho 不显示
QLineEdit::Password 密码显示
QLineEdit::PasswordEchoOnEdit 编辑时候正常显示,其他密码显示

掩码字符 inputMask

字符(必须输入) 字符(可留空) 含义
A a 只能输入A-Z,a-z
N n 只能输入A-Z,a-z,0~9
X x 可以输入任意字符
9 0 只能输入0-9
D d 只能输入1-9
# 只能输入+, -, 0-9
H h 只能输入十六进制字符 (0-9,a-f,A-F)
B b 只能输入二进制字符(0,1)
> 后面的字母字符自动转换为大写
< 后面的字母字符自动转换为小写
! 停止字母字符的大小写转换
\ 将该表中的特殊字符正常显示用作分隔符
;c 终止输入掩码并将空白字符设置为c
保留.

inputMaskLineEdit->setInputMask( "+99 99 99 99 99;_" );

setValidator()对输入进行限制

在对同一个QLineEdit的validator或者input mask进行转换时,最好先将它的validator或者input mask清除,以避免错误发生。

//无限制
validatorLineEdit->setValidator(0);

//只能输入整数
validatorLineEdit->setValidator( new QIntValidator(
validatorLineEdit));

//实例,只能输入-180到180之间的小数,小数点后最多两位(可用于限制经纬度等)
QDoubleValidator *pDfValidator = new QDoubleValidator(-180.0, 180.0 , 2, validatorLineEdit);
pDfValidator->setNotation(QDoubleValidator::StandardNotation);
validatorLineEdit->setValidator(pDfValidator);

//ip地址限制
QRegExp exp("^((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$");
QRegExpValidator* ddd =new QRegExpValidator(exp);
ui->le_upd_addr->setValidator(ddd);