Russian Qt Forum
Март 28, 2024, 23:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Не вводятся данные в QLineEdit  (Прочитано 7801 раз)
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);
« Последнее редактирование: Июль 17, 2017, 12:21 от maria123252 » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Июль 04, 2017, 11:14 »

Меня смущает "[0-255]" обычно в регулярках диапазон цифр указывается как "[0-9]"
Записан

Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #2 : Июль 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])$
Записан
maria123252
Гость
« Ответ #3 : Июль 04, 2017, 15:48 »

Не могу соединить во едино маску и валидатор. Помогите, пожалуйста, советом
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Июль 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));
 

Так не работает?
Записан

maria123252
Гость
« Ответ #5 : Июль 05, 2017, 08:32 »

Так работает, но без маски. А если подключаю маску, то не могу вводить числа
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #6 : Июль 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";
 
Записан

maria123252
Гость
« Ответ #7 : Июль 05, 2017, 10:58 »

если использовать маску, а потом на введен адрес валидатор - так можно?
И можно в QLineEdit сменить курсор? и чтоб при открытии он сразу вставал на ввод ip-адрес?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #8 : Июль 05, 2017, 12:13 »

если использовать маску, а потом на введен адрес валидатор - так можно?

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

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

Вы про фокус QLineEdit, чтобы при открытии он был текущим виджетом?
Или все-таки про позицию курсора?
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.095 секунд. Запросов: 22.