gpt4 book ai didi

Qt QLineEdit 输入验证

转载 作者:行者123 更新时间:2023-12-04 12:50:42 24 4
gpt4 key购买 nike

如何在 QLineEdit 上设置输入验证器以将其限制为有效的 IP 地址?即 x.x.x.x,其中 x 必须在 0 到 255 之间。并且 x 不能为空

最佳答案

您正在寻找QRegExpQValidator , 要验证 IPv4,请使用此表达式:

\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-‌​9]|[01]?[0-9][0-9]?)‌​\.(25[0-5]|2[0-4][0-‌​9]|[01]?[0-9][0-9]?)‌​\.(25[0-5]|2[0-4][0-‌​9]|[01]?[0-9][0-9]?)‌​\b

例子:

QRegExp ipREX("\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-‌​9]|[01]?[0-9][0-9]?)‌​\.(25[0-5]|2[0-4][0-‌​9]|[01]?[0-9][0-9]?)‌​\.(25[0-5]|2[0-4][0-‌​9]|[01]?[0-9][0-9]?)‌​\b");
ipREX.setCaseSensitivity(Qt::CaseInsensitive);
ipREX.setPatternSyntax(QRegExp::RegExp);

现在,将它用作文本行编辑的验证器:

QRegExpValidator regValidator( rx, 0 );
ui->lineEdit->setValidator( &regValidator );

现在,只需读取您的输入,验证器就会对其进行验证 =)。如果您想手动执行此操作,请尝试以下操作:

ui->lineEdit->setText( "000.000.000.000" );
const QString input = ui->lineEdit->text();
// To check if the text is valid:
qDebug() << "IP validation: " << myREX.exactMatch(input);

还有另一种使用 Qt 类的方法,QHostAddressQAbstractSocket :

QHostAddress address(input);
if (QAbstractSocket::IPv4Protocol == address.protocol())
{
qDebug("Valid IPv4 address.");
}
else if (QAbstractSocket::IPv6Protocol == address.protocol())
{
qDebug("Valid IPv6 address.");
}
else
{
qDebug("Unknown or invalid address.");
}

关于Qt QLineEdit 输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39202697/

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