Russian Qt Forum

Qt => Общие вопросы => Тема начата: Примерный ученик от Июль 02, 2008, 20:32



Название: Помогите с маской для Validator
Отправлено: Примерный ученик от Июль 02, 2008, 20:32
Для ввода широты или долготы
в виде (знак)градусы.минуты.секунды
никак не могу понять, как сделать необязательным ввод знака.

Вариант маски

QRegExp rx("[-+ ][0-1][0-9][0-9] [0-5][0-9] [0-5][0-9]?$");   

требует обязательно вводить или -, или +, или пробел... Некрасиво...

Неужели никто не знает, как этого избежать?


Название: Re: Помогите с маской для Validator
Отправлено: Sergeich от Июль 03, 2008, 01:15
Как вариант:
[-+]?\d{1,3}\s?[0-5][0-9]'\s?[0-5][0-9]''
Вообще, запускай кутевый пример tools/regexp, читай доку по QRegExp - и вперед!
P.S. Я бы сделал 3 спинбокса


Название: Re: Помогите с маской для Validator
Отправлено: Alex03 от Июль 03, 2008, 05:48
...
P.S. Я бы сделал 3 спинбокса
Или один спинбокс, как в QDateTimeEdit, собственно  его можно и взять за основу.


Название: Re: Помогите с маской для Validator
Отправлено: Примерный ученик от Июль 03, 2008, 08:45
Как вариант:
[-+]?\d{1,3}\s?[0-5][0-9]'\s?[0-5][0-9]''
Вообще, запускай кутевый пример tools/regexp, читай доку по QRegExp - и вперед!
P.S. Я бы сделал 3 спинбокса

На основной форме я 3 спинбокса и сделал.
Но заказчик хочет править и в ячейке таблицы.
А в доке про QRegExp о знаке числа не нашел ни слова.
Похоже она на это не расчитана...

Вопрос можно сформулировать так:
есть ли возможность обозначить знакоместо, не обязательное для заполнения, и если
вводится символ,допустимый для следующей позиции, переходить дальше и ставить символ
следующего знакоместа...
 ???


Название: Re: Помогите с маской для Validator
Отправлено: Alex03 от Июль 03, 2008, 11:03
А кто мешает создать виджет в котором будут 3-х спинбокса?



Название: Re: Помогите с маской для Validator
Отправлено: Примерный ученик от Июль 03, 2008, 15:30
Мешает недостаток знаний и опыта.
Вариант

QRegExp rx("[-+]{0,1}[0-1][0-9][0-9] [0-5][0-9] [0-5][0-9]");

почти устраивает. Знак теперь не обязателен...
Почти, потому, что при вводе не работают навигационные клавиши...
Это как нибудь лечится?