【Qt】限制QLineEdit的数值输入范围-180-180

时间:2025-01-24 07:46:23

1.限制整数输入范围为[-180,180]
QRegExp rx("(^-?180$)|(^-?1[0-7]\\d$)|(^-?[1-9]\\d$)|(^-?[1-9]$)|^0$");
QRegExpValidator *pReg = new QRegExpValidator(rx, this);
lineEdit->setValidator(pReg);

2.限制浮点数输入范围为[-180,180]
QRegExp rx("^-?(180|1?[0-7]?\\d(\\.\\d+)?)$");
QRegExpValidator *pReg = new QRegExpValidator(rx, this);
lineEdit->setValidator(pReg);


3.限制浮点数输入范围为[-180,180]并限定为小数位后4位
QRegExp rx("^-?(180|1?[0-7]?\\d(\\.\\d{1,4})?)$");
QRegExpValidator *pReg = new QRegExpValidator(rx, this);
lineEdit->setValidator(pReg);
 

实际上在运用过程中。

上述存在一定的问题

“3.限制浮点数输入范围为[-180,180]并限定为小数位后4位”

QRegExp rx("^-?(180|1?[0-7]?\\d(\\.\\d{1,4})?)$");

可以看出来包括实验出来,这个可以输入的不全面,比如90 80等没办法输入

简单改写一下可以,可以显示完全

QRegExp rx("^((-?180)|(-?1[0-7]\\d)(\\.\\d{1,4})?|(-?[1-9]\\d)(\\.\\d{1,4})?|(-?[1-9])(\\.\\d{1,4})?|0(\\.\\d{1,4})?)$ ");
QRegExpValidator *pReg = new QRegExpValidator(rx, this);
ui->longtitudeEdit->setValidator(pReg);//经度