首页 文章

QLineEdit IP部分验证

提问于
浏览
2

在我的项目中,我想通过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时发出 .

有任何建议如何解决这个问题?

谢谢

3 回答

  • 0

    您可以使用 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));
    
  • 3

    部分验证:

    oIpRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
    QRegExp oIpRegex ("^" + oIpRange
                     + "\\." + oIpRange
                     + "(\\." + oIpRange + ")?"
                     + "(\\." + oIpRange + ")?$");
    
  • 0

    谢谢你的回答我给正则表达式添加了一个小修复

    QString oIpRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
    QRegExp oIpRegex ("^" + oIpRange
                             + "(\\." + oIpRange + ")?"
                             + "(\\." + oIpRange + ")?"
                             + "(\\." + oIpRange + ")?$");
    

相关问题