Ris*_*sal 4 validation qt qregexp input-mask qregularexpression
如何在 A 上设置输入验证器QLineEdit以将其限制为有效的 IP 地址?iexxxx 其中 x 必须介于 0 到 255 之间。并且 x 不能为空
您正在寻找QRegExp和QValidator,以使用以下表达式验证 IPv4:
\n\n\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-\xe2\x80\x8c\xe2\x80\x8b9]|[01]?[0-9][0-9]?)\xe2\x80\x8c\xe2\x80\x8b\\.(25[0-5]|2[0-4][0-\xe2\x80\x8c\xe2\x80\x8b9]|[01]?[0-9][0-9]?)\xe2\x80\x8c\xe2\x80\x8b\\.(25[0-5]|2[0-4][0-\xe2\x80\x8c\xe2\x80\x8b9]|[01]?[0-9][0-9]?)\xe2\x80\x8c\xe2\x80\x8b\\b\nRun Code Online (Sandbox Code Playgroud)\n\n例子:
\n\nQRegExp ipREX("\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-\xe2\x80\x8c\xe2\x80\x8b9]|[01]?[0-9][0-9]?)\xe2\x80\x8c\xe2\x80\x8b\\.(25[0-5]|2[0-4][0-\xe2\x80\x8c\xe2\x80\x8b9]|[01]?[0-9][0-9]?)\xe2\x80\x8c\xe2\x80\x8b\\.(25[0-5]|2[0-4][0-\xe2\x80\x8c\xe2\x80\x8b9]|[01]?[0-9][0-9]?)\xe2\x80\x8c\xe2\x80\x8b\\b");\nipREX.setCaseSensitivity(Qt::CaseInsensitive);\nipREX.setPatternSyntax(QRegExp::RegExp);\nRun Code Online (Sandbox Code Playgroud)\n\n现在,使用它作为文本行编辑的验证器:
\n\nQRegExpValidator regValidator( rx, 0 );\nui->lineEdit->setValidator( ®Validator );\nRun Code Online (Sandbox Code Playgroud)\n\n现在,只需读取您的输入,验证器就会验证它 =)。如果您想手动执行此操作,请尝试以下操作:
\n\nui->lineEdit->setText( "000.000.000.000" );\nconst QString input = ui->lineEdit->text();\n// To check if the text is valid:\nqDebug() << "IP validation: " << myREX.exactMatch(input);\nRun Code Online (Sandbox Code Playgroud)\n\n还有另一种方法可以使用 Qt 类QHostAddress和QAbstractSocket来实现:
\n\nQHostAddress address(input);\nif (QAbstractSocket::IPv4Protocol == address.protocol())\n{\n qDebug("Valid IPv4 address.");\n}\nelse if (QAbstractSocket::IPv6Protocol == address.protocol())\n{\n qDebug("Valid IPv6 address.");\n}\nelse\n{\n qDebug("Unknown or invalid address.");\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
11419 次 |
| 最近记录: |