gpt4 book ai didi

c++ - 如何在 Qt 中一次将输入掩码和 QValidator 设置为 QLineEdit?

转载 作者:可可西里 更新时间:2023-11-01 18:03:57 26 4
gpt4 key购买 nike

我想要一个接受 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com