Russian Qt Forum

Qt => Общие вопросы => Тема начата: maria123252 от Июль 03, 2017, 15:47



Название: [РЕШЕНО]Не вводятся данные в QLineEdit
Отправлено: maria123252 от Июль 03, 2017, 15:47
Суть проблемы такая, что у меня есть несколько QLineEdit, которые при написании в них должны сразу обрабатывать по маске и проверять правильность введённых данных:
1)IP-адрес;
2)порт адреса;
3)значение в hex (с добавлением одного 0 в начале);
4)3)значение в hex;

Реализую примерно так, но при запуске ничего не вводится
// IP-адрес
    QRegExp regExp("[0-255]{1,3}\\.[0-255]{1,3}\\.[0-255]{1,3}\\.[0-255]{1,3}");
    ui_connect_server_ibsu->ip_address_server_ibsu->setValidator(new QRegExpValidator(regExp,this));
    ui_connect_server_ibsu->ip_address_server_ibsu->textChanged(ipAddressServerIbsu);


Название: Re: Не вводятся данные в QLineEdit
Отправлено: gil9red от Июль 04, 2017, 11:14
Меня смущает "[0-255]" обычно в регулярках диапазон цифр указывается как "[0-9]"


Название: Re: Не вводятся данные в QLineEdit
Отправлено: Hellraiser от Июль 04, 2017, 11:39
Вот рабочая регулярка для IPv4:
Код:
^((([2][5][0-5]|([2][0-4]|[1][0-9]|[0-9])?[0-9])\\.){3})([2][5][0-5]|([2][0-4]|[1][0-9]|[0-9])?[0-9])$


Название: Re: Не вводятся данные в QLineEdit
Отправлено: maria123252 от Июль 04, 2017, 15:48
Не могу соединить во едино маску и валидатор. Помогите, пожалуйста, советом


Название: Re: Не вводятся данные в QLineEdit
Отправлено: gil9red от Июль 04, 2017, 16:00
Не могу соединить во едино маску и валидатор. Помогите, пожалуйста, советом

Код
C++ (Qt)
QRegExp regExp("^((([2][5][0-5]|([2][0-4]|[1][0-9]|[0-9])?[0-9])\\.){3})([2][5][0-5]|([2][0-4]|[1][0-9]|[0-9])?[0-9])$");
ui_connect_server_ibsu->ip_address_server_ibsu->setValidator(new QRegExpValidator(regExp,this));
 

Так не работает?


Название: Re: Не вводятся данные в QLineEdit
Отправлено: maria123252 от Июль 05, 2017, 08:32
Так работает, но без маски. А если подключаю маску, то не могу вводить числа


Название: Re: Не вводятся данные в QLineEdit
Отправлено: gil9red от Июль 05, 2017, 09:00
Так работает, но без маски. А если подключаю маску, то не могу вводить числа


Похоже, одновременно нельзя использовать маску и валидатор, поэтому можно установить маску и проверять вводимые значения

Код
C++ (Qt)
ui->lineEdit_IP->setInputMask( "000.000.000.000" );
 
QHostAddress myIP;
  if( myIP.setAddress( ui->lineEdit_IP->text()) )
      qDebug()<<"Valid IP Address";
  else
      qDebug()<<"Invalid IP address";
 


Название: Re: Не вводятся данные в QLineEdit
Отправлено: maria123252 от Июль 05, 2017, 10:58
если использовать маску, а потом на введен адрес валидатор - так можно?
И можно в QLineEdit сменить курсор? и чтоб при открытии он сразу вставал на ввод ip-адрес?


Название: Re: Не вводятся данные в QLineEdit
Отправлено: gil9red от Июль 05, 2017, 12:13
если использовать маску, а потом на введен адрес валидатор - так можно?

Попробуйте, я вот не знаю, скорее всего, о разных вещах мы подумали :)

И можно в QLineEdit сменить курсор? и чтоб при открытии он сразу вставал на ввод ip-адрес?

Вы про фокус  (http://doc.qt.io/qt-5/qwidget.html#setFocus)QLineEdit, чтобы при открытии он был текущим виджетом?
Или все-таки про позицию  (http://doc.qt.io/qt-5/qlineedit.html#cursorPosition-prop)курсора?