Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Примерный ученик от Декабрь 10, 2010, 15:29



Название: QLineEdit Qt3.3.8
Отправлено: Примерный ученик от Декабрь 10, 2010, 15:29
В Эдите уже есть цифры,положим 4 и длина максимальная 4.
Как заставить его заменять текущие значения новыми не стирая все и не используя переключатель вставка-замена?
Просто нужно, чтобы ВСЕГДА заменял цифры со сдвигом влево.
Наложен

QRegExp rx4( "[0-9]{4}" );
QValidator* v4 = new QRegExpValidator( rx4,this );
QLiteEdit LE->setValidator(v4);

 ???
Запарился уже


Название: Re: QLineEdit Qt3.3.8
Отправлено: Пантер от Декабрь 10, 2010, 16:09
Отлавливать события?


Название: Re: QLineEdit Qt3.3.8
Отправлено: Примерный ученик от Декабрь 10, 2010, 16:13
Не, с событиями нет проблем.
Ничего не вводит, если курсор стоит,положим, в позиции 2 и там уже есть цифра ???


Название: Re: QLineEdit Qt3.3.8
Отправлено: Пантер от Декабрь 10, 2010, 16:35
Отлавливай событие нажатия и делай то, что тебе нужно.


Название: Re: QLineEdit Qt3.3.8
Отправлено: Примерный ученик от Декабрь 10, 2010, 16:48
Хотелось бы стандартными средствами пользоваться,
а не рисовать все руками...
Каменный век какой то >:(


Название: Re: QLineEdit Qt3.3.8
Отправлено: Примерный ученик от Декабрь 10, 2010, 21:33
Сделал через фильтр
Код:
	
        if (e->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = (QKeyEvent *)e;
if ((keyEvent->key() >= Key_0) && (keyEvent->key() <= Key_9))
MyLineEdit->del();
}
Работает ;D