作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想要一个接受 ip 地址的行编辑。如果我将输入掩码作为:
ui->lineEdit->setInputMask("000.000.000.000");
它接受大于 255 的值。如果我给出一个验证器,那么我们必须在每三位数字后给出一个点 (.)。最好的处理方法是什么?
最佳答案
It is accepting value greater than 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。
关于c++ - 如何在 Qt 中一次将输入掩码和 QValidator 设置为 QLineEdit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23166283/
我是一名优秀的程序员,十分优秀!