2015-05-25 54 views
2

В моем проекте я хочу отфильтровать некоторые из моих данных с помощью IP-входа.Частичная проверка QLineEdit 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-адреса, а не в частичном.

Любое предложение, как исправить эту проблему?

Благодаря

ответ

2

Вы можете использовать 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)); 
0

Для частичной проверки:

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 + ")?$"); 
+0

Это не компилируется! – ForeverLearning

+1

Спасибо, что заметили. Я отредактировал свой ответ. – Simon