Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: NetWorm от Август 29, 2012, 10:58



Название: Универсальный QLineEdit
Отправлено: NetWorm от Август 29, 2012, 10:58
Пишу щас пользовательский виджет... Вобщем ситуация такая. Есть например свойство в Едита typeEdit. В зависимости от которого у нас например появляется рядом кнопка при нажатии на которую появляется календарь, соответственно Едиту накладывается маска для ввода даты. Для ввода обычных чисел использую QIntValidator. Выставляю длинну и прочее в свойствах...

Собственно вопрос. Необходимо сделать ввод Double числа. Прием если стоит ограничение 10.2 т.е. 10 целой части и 2 дробной части.
Каким образом, не использую маску ввода, реализовать ввод такого числа. Что то вроде как это реализовано в SpinBox


Название: Re: Универсальный QLineEdit
Отправлено: _OLEGator_ от Август 29, 2012, 11:10
А чем QDoubleValidator и QRegExpValidator не подходит?
Не понятно, что надо.


Название: Re: Универсальный QLineEdit
Отправлено: NetWorm от Август 29, 2012, 11:15
QDoubleValidator - вроде бы именно то что нужно, но он позволяет вводить сколько угодно символов целой части, и еще хотелось бы чтобы ввод был такой же как в SpinBox


Название: Re: Универсальный QLineEdit
Отправлено: GreatSnake от Август 29, 2012, 11:18
Код
C++ (Qt)
void QDoubleValidator::setRange ( double minimum, double maximum, int decimals = 0 ) [virtual]


Название: Re: Универсальный QLineEdit
Отправлено: NetWorm от Август 29, 2012, 11:20
Это понятно! Но он ограничивает только дробную часть, целую могу вводить сколько угодно... И еще ставятся запятые


Название: Re: Универсальный QLineEdit
Отправлено: NetWorm от Август 29, 2012, 12:01
Ну я так понял проще всего тут использовать класс QWidget а уже в зависимости от свойств создавать либо LineEdit либо QSpinBox


Название: Re: Универсальный QLineEdit
Отправлено: _OLEGator_ от Август 29, 2012, 12:25
Привет велосипедоизобретателям.

Странно, но QDoubleValidator не работает должным образом. В общем QRegExpValidator в помощь.


Название: Re: Универсальный QLineEdit
Отправлено: NetWorm от Август 29, 2012, 12:29
Не работает оно все так как надо!!! Если можно приведите примерчик!!


Название: Re: Универсальный QLineEdit
Отправлено: Igors от Август 29, 2012, 12:36
Не работает оно все так как надо!!! Если можно приведите примерчик!!
Опять эта тема. Работает, то Вы не разобрались

http://www.prog.org.ru/index.php?topic=22600.msg159044#msg159044 (http://www.prog.org.ru/index.php?topic=22600.msg159044#msg159044)


Название: Re: Универсальный QLineEdit
Отправлено: NetWorm от Август 29, 2012, 13:50
Блин да не то это! Количество целых чисел можно ввести сколько угодно, но не больше чем указано... В данном случае 3.2 т.е. например 124.25 причем можно внести 4.25... Вот так надо но уже 1234.56 - ввести нельзя.


Название: Re: Универсальный QLineEdit
Отправлено: _OLEGator_ от Август 29, 2012, 13:53
Почитай про регулярные выражения.


Название: Re: Универсальный QLineEdit
Отправлено: Igors от Август 29, 2012, 14:11
Блин да не то это! Количество целых чисел можно ввести сколько угодно, но не больше чем указано... В данном случае 3.2 т.е. например 124.25 причем можно внести 4.25... Вот так надо но уже 1234.56 - ввести нельзя.
А Вас не смущает что "баг" в QDoubleValidator что-то уж слишком очевиден? :)  Вы можете унаследоваться от QDoubleValidator и запретить ввод "больших", делов на неск минут. Но учтите что так Вы лишаете пользователя возможности забить введенную точку, что может его не устроить.


Название: Re: Универсальный QLineEdit
Отправлено: NetWorm от Август 30, 2012, 06:57
Понятно, короче готового решения я так понимаю нет! Чтож будем писать самостоятельно то что нужно!!!