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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Нестандартный QLineEdit  (Прочитано 20274 раз)
Larry
Гость
« : Сентября 21, 2011, 10:44 »

Доброе утро, форумчане! Дайте пожалуйста совет, как лучше сделать. Необходимо сделать окно для ввода Ip-адреса, как в свойствах Протокол Интернета. Правильно ли будет наследоваться от QLineEdit или надо как-то по другому? Заранее спасибо...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Сентября 21, 2011, 10:55 »

Посмотри про QValidator.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
« Ответ #2 : Сентября 21, 2011, 11:00 »

Посмотри про QValidator.
и на QLineEdit::setInputMask()
Записан
Larry
Гость
« Ответ #3 : Сентября 21, 2011, 11:03 »

спасибо, сейчас посмотрю:)
Записан
alexman
Гость
« Ответ #4 : Сентября 21, 2011, 11:22 »

Посмотри про QValidator.
и на QLineEdit::setInputMask()
Вид будет отличаться от картинки.
Записан
Larry
Гость
« Ответ #5 : Сентября 21, 2011, 11:23 »

не страшно, если не понравится, то буду искать другой выход Улыбающийся
Записан
Larry
Гость
« Ответ #6 : Сентября 21, 2011, 11:32 »

использовал вариант с
Код:
setInputMask("000.000.000.000;_");
И еще вопрос, как центрировать курсор внутри маски?
Записан
alexman
Гость
« Ответ #7 : Сентября 21, 2011, 11:34 »

Еще валидатор воткни, чтобы только корректные значения вводились.
Записан
Larry
Гость
« Ответ #8 : Сентября 21, 2011, 11:39 »

спасибо, воткну, без него никуда:)
Записан
Larry
Гость
« Ответ #9 : Сентября 21, 2011, 12:12 »

добавил валидатор и теперь не хочет работать
Код:
m_leIP->setValidator(new QIntValidator(0, 255, m_leIP);
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Сентября 21, 2011, 12:13 »

Какой же это QIntValidator?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
alexman
Гость
« Ответ #11 : Сентября 21, 2011, 14:09 »

Тут надо QRegExpValidator на всю строку устанавливать (учитывать точки, первый символ [0-2], ...).
Записан
Larry
Гость
« Ответ #12 : Сентября 21, 2011, 14:25 »

спасибо, до этого никогда с ними не работал. Попробую написать регулярное выражение...
Записан
alexman
Гость
« Ответ #13 : Сентября 21, 2011, 14:44 »

Вот и повод появился разобраться Улыбающийся
Записан
Larry
Гость
« Ответ #14 : Сентября 21, 2011, 14:58 »

Код:
m_leStrIP->setInputMask("000.000.000.000;0");
QRegExp rx( "\\b(([01]?\\d?\\d|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d?\\d|2[0-4]\\d|25[0-5])\\b" );
QRegExpValidator *validator = new QRegExpValidator(QRegExp(rx), m_leStrIP);
m_leStrIP->setValidator(validator);

Вот что получилось, но при этом новая проблема возникла:
Код:
m_leStrIP->text();
выдает, н-р 11.11.2.1, если было введено 110.101.200.001, т.е. глотает все нули. Как исправить?
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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