Russian Qt Forum

Qt => Общие вопросы => Тема начата: hackoff от Март 25, 2010, 07:21



Название: QRegExpValidator
Отправлено: hackoff от Март 25, 2010, 07:21
Пытаюсь сделать поле для ввода ip адресс. Благодаря гуглу сделал так:
Код:
    const QRegExp rxip("(?:1\d?\d?|2(?:[0-4]\d?|[6789]|5[0-5]?)?|[3-9]\d?|0)(?:\.(?:1\d?\d?|2(?:[0-4]\d?|[6789]|5[0-5]?)?|[3-9]\d?|0)){3}");
    txtAdress->setValidator(new QRegExpValidator(rxip,this));
Но сие чудо мысли к сожалению не работает. Помогите исправить ошибку и если можно небольшой ликбез по регулярным выражениям. А то что-то слишком замудрено..


Название: Re: QRegExpValidator
Отправлено: dnc2rt от Март 25, 2010, 08:16
Вот пример для ip:
Код:
QRegExp ipRegExp( "\\b(([01]?\\d?\\d|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d?\\d|2[0-4]\\d|25[0-5])\\b" );

****->setValidator( new QRegExpValidator( ipRegExp, this ) );


Название: Re: QRegExpValidator
Отправлено: hackoff от Март 25, 2010, 08:43
спасибо за оперативный ответ. Все работает.

Как можно данный способ усовершенствовать, чтобы  пользователю не пришлось вводить точки. Т.е. изначально было "   .   .   .   ". А  пользователь вводит только цифры.
вариант setInputMask("000.000.000.000") не устраивает т.к. можно ввести 999.999.999.999.


Название: Re: QRegExpValidator
Отправлено: alexman от Март 25, 2010, 08:46
А если input mask и регулярное выражение?


Название: Re: QRegExpValidator
Отправлено: hackoff от Март 25, 2010, 09:12
пробовал. Тогда не вводятся данные.


Название: Re: QRegExpValidator
Отправлено: dnc2rt от Март 25, 2010, 10:32
Маска такая должна быть:

Код:
"000.000.000.000;0"

И будет счастье!


Название: Re: QRegExpValidator
Отправлено: hackoff от Март 27, 2010, 07:05
спасибо. Работает. А что означает ";0"? В хелпе не могу найти.


Название: Re: QRegExpValidator
Отправлено: Пантер от Март 27, 2010, 10:41
Это то, что будет показываться пока не введешь свои данные.


Название: Re: QRegExpValidator
Отправлено: ilyagoo от Май 24, 2010, 15:12
а кто-нибудь обратил внимание, что адрес 100.100.100.100 возвращается лайнэдитом как 1.1.1.1?