Russian Qt Forum

Qt => Общие вопросы => Тема начата: Atronah от Октябрь 04, 2009, 22:35



Название: Не могу разобраться с "масками" полей ввода
Отправлено: Atronah от Октябрь 04, 2009, 22:35
При разработке приложения потребовалось ограничить поле ввода (Line Edit) только числами (положительные и отрицательные). Сначала попытался сделать это через окно свойств объекта в интерфейсе Qt Designer. Не вышло, пробовал подставлять в поле disambiguation маску (#0009) и напрямую и в кавычках, не помогло.
Сделал программно, при запуске приложения (ui->edt1->setInputMask("#0009")), получилось. Но возникла другая проблема:
В справке Qt написано, что "#" - необязательные числа и знаки +/-, а "0" - это необязательные числа. Так вот на практике, что "0", что "#" позволяют на их место вводить еще и пробел, поэтому для указанной маски будет нормальным текст "3 42", т.е. с пробелом (хотя при проверке введенного текста через синхронную Сигнал-Слот привязку к QLabel видно что пробелы не учитываются). Так же, в добавок к этому, после запуска и перевода курсора в Edit, как то все не эстетично отображается (понятней объяснить не могу).
Мои конкретные вопросы:
1. Как через интерфейс дезайнера можно установить маску (не существенно, но интересно, что не так делаю).
2. Как сделать более красивый ввод нужных мне значений в Edit средствами Qt, а не собственными?


Название: Re: Не могу разобраться с "масками" полей ввода
Отправлено: SimpleSunny от Октябрь 05, 2009, 08:30
2. QIntValidator или QRegExpValidator смотря какой размер числа.
QLineEdit.setValidator()


Название: Re: Не могу разобраться с "масками" полей ввода
Отправлено: Aleksey_Zh от Октябрь 05, 2009, 15:31
Можно просто перехватить события клавиатуры на этот компонент и ненужные отсеять...