【问题标题】:QLineEdit IP partial validationQLineEdit IP 部分验证
【发布时间】:2015-05-25 15:48:34
【问题描述】:

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

有什么建议可以解决这个问题吗?

谢谢

【问题讨论】:

    标签: qt ip qlineedit qregexp


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      对于部分验证:

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

      【讨论】:

        【解决方案3】:

        感谢您的回答,我对正则表达式添加了一个小修复

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

        【讨论】:

        • 这不会编译!
        猜你喜欢
        • 2012-01-06
        • 2017-01-05
        • 2015-11-18
        • 1970-01-01
        • 1970-01-01
        • 2014-05-14
        • 2012-09-17
        • 2015-09-20
        • 1970-01-01
        相关资源
        最近更新 更多