我想要接受IP地址的行编辑。如果我输入掩码为:
ui->lineEdit->setInputMask("000.000.000.000");
它接受的值大于255。如果我提供验证器,则必须在每三位数字后加上点(.)。最好的处理方式是什么?
最佳答案
绝对是因为“0”表示this:
ASCII digit permitted but not required.
如您所见,这不是您的一杯茶。至少有以下几种方法可以避免此问题:
正则表达式解决方案可能是最快的,但也是最丑陋的恕我直言:
QString ipRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
// You may want to use QRegularExpression for new code with Qt 5 (not mandatory).
QRegExp ipRegex ("^" + ipRange
+ "\\." + ipRange
+ "\\." + ipRange
+ "\\." + ipRange + "$");
QRegExpValidator *ipValidator = new QRegExpValidator(ipRegex, this);
lineEdit->setValidator(ipValidator);
免责声明:这只会正确验证IP4地址,因此如果将来需要,它将不适用于IP6。