QLineEdit IP 部分验证
QLineEdit IP partial validation
在我的项目中,我想通过 IP 输入过滤一些数据。
我也想允许通过部分 IP 输入进行过滤
例如:192.168.
我找到了如何设置完整的 IP 验证。
QString oIpRange;
QRegExpValidator *poIpValidator;
// Client IP validation mask
oIpRange =
"(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
QRegExp oIpRegex ("^" + oIpRange
+ "\." + oIpRange
+ "\." + oIpRange
+ "\." + oIpRange + "$");
poIpValidator =
new QRegExpValidator(oIpRegex,
poQtLineEdit);
// Client IP set validator
poQtLineEdit->setValidator( poIpValidator );
我将 QLineEdit "returnPressed" 信号连接到我的过滤函数。
问题是 "returnPressed" 信号只在我输入完整的 IP 时发出,而不是部分 IP。
有什么解决该问题的建议吗?
谢谢
您可以使用 QRegExpValidator
来做到这一点。
// #include <QRegExpValidator>
QString oIpRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
QRegExp oIpRegex ("^" + oIpRange
+ "\." + oIpRange
+ "\." + oIpRange
+ "\." + oIpRange + "$");
ed->setValidator(new QRegExpValidator(oIpRegex));
对于部分验证:
oIpRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
QRegExp oIpRegex ("^" + oIpRange
+ "\." + oIpRange
+ "(\." + oIpRange + ")?"
+ "(\." + oIpRange + ")?$");
感谢您的回答我对正则表达式做了一个小修正
QString oIpRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
QRegExp oIpRegex ("^" + oIpRange
+ "(\." + oIpRange + ")?"
+ "(\." + oIpRange + ")?"
+ "(\." + oIpRange + ")?$");
在我的项目中,我想通过 IP 输入过滤一些数据。
我也想允许通过部分 IP 输入进行过滤 例如:192.168.
我找到了如何设置完整的 IP 验证。
QString oIpRange;
QRegExpValidator *poIpValidator;
// Client IP validation mask
oIpRange =
"(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
QRegExp oIpRegex ("^" + oIpRange
+ "\." + oIpRange
+ "\." + oIpRange
+ "\." + oIpRange + "$");
poIpValidator =
new QRegExpValidator(oIpRegex,
poQtLineEdit);
// Client IP set validator
poQtLineEdit->setValidator( poIpValidator );
我将 QLineEdit "returnPressed" 信号连接到我的过滤函数。
问题是 "returnPressed" 信号只在我输入完整的 IP 时发出,而不是部分 IP。
有什么解决该问题的建议吗?
谢谢
您可以使用 QRegExpValidator
来做到这一点。
// #include <QRegExpValidator>
QString oIpRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
QRegExp oIpRegex ("^" + oIpRange
+ "\." + oIpRange
+ "\." + oIpRange
+ "\." + oIpRange + "$");
ed->setValidator(new QRegExpValidator(oIpRegex));
对于部分验证:
oIpRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
QRegExp oIpRegex ("^" + oIpRange
+ "\." + oIpRange
+ "(\." + oIpRange + ")?"
+ "(\." + oIpRange + ")?$");
感谢您的回答我对正则表达式做了一个小修正
QString oIpRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
QRegExp oIpRegex ("^" + oIpRange
+ "(\." + oIpRange + ")?"
+ "(\." + oIpRange + ")?"
+ "(\." + oIpRange + ")?$");