在我的项目中,我想通过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时发出。
有任何建议如何解决这个问题?
由于
答案 0 :(得分:3)
您可以使用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));
答案 1 :(得分:0)
部分验证:
oIpRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
QRegExp oIpRegex ("^" + oIpRange
+ "\\." + oIpRange
+ "(\\." + oIpRange + ")?"
+ "(\\." + oIpRange + ")?$");
答案 2 :(得分:0)
感谢您的回答我为正则表达式添加了一个小修补程序
QString oIpRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
QRegExp oIpRegex ("^" + oIpRange
+ "(\\." + oIpRange + ")?"
+ "(\\." + oIpRange + ")?"
+ "(\\." + oIpRange + ")?$");