Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: zoro86 от Февраль 23, 2010, 07:50



Название: как ограничить пользователя при вводе в QLineEdit?
Отправлено: zoro86 от Февраль 23, 2010, 07:50
есть экранная клавиатура с помощью которой осуществляется ввод данных,
при этом используется ТачСкрин на мониторе в качестве инструмента,
необходимо сделать так чтобы у пользователя не было возможности менять положение курсора на поле ввода QLineEdit,
при этом он мог пользоваться только клавиатурой, то есть как бы кликая по QLineEdit положение курсора не менялось,
помогите как это можно осуществить...?


Название: Re: как ограничить пользователя при вводе в QLineEdit?
Отправлено: Пантер от Февраль 23, 2010, 10:11
Переопредели void QWidget::mousePressEvent ( QMouseEvent * event ).


Название: Re: как ограничить пользователя при вводе в QLineEdit?
Отправлено: zoro86 от Февраль 23, 2010, 12:21
Дело в том что у меня виджет выглядит следующим образом:
есть сам виджет на нем два QLineEdit-a
добавил.
в .h
Код:
protected:
void mousePressEvent(QMouseEvent *e);

d .cpp

Код:
void InputPhone::mousePressEvent(QMouseEvent *e)
{
if(e->button() == Qt::LeftButton)
{
qDebug() << "Mouse clс";
}
}

но он только срабатывает когда нажимаю на форму ... когда нажимаю на QLineEdit не срабатывает...
проста у меня форма со своими элементами в Designere сделана... как быть??


Название: Re: как ограничить пользователя при вводе в QLineEdit?
Отправлено: BRE от Февраль 23, 2010, 12:24
Тебе нужно определить класс-наследник от QLineEdit и в нем переопределить mousePressEvent.
И использовать этот класс на диалоге.


Название: Re: как ограничить пользователя при вводе в QLineEdit?
Отправлено: SABROG от Февраль 23, 2010, 13:48
А в случае с виртуальной клавиатурой установка тупо setEnabled(false) или setReadOnly(true) не прокатит?

Или в слоте на void QLineEdit::cursorPositionChanged ( int old, int new )   [signal] вызывать setCursorPosition(old) (правда тут рекурсия может быть, надо проверять)


Название: Re: как ограничить пользователя при вводе в QLineEdit?
Отправлено: zoro86 от Февраль 23, 2010, 14:21
вроде после переопределения событий :
Код:
void QLineEdit::mousePressEvent(QMouseEvent *e)
void QLineEdit::mouseDoubleClickEvent(QMouseEvent *e)

осталось отменить возможность выделения текста...???


Название: Re: как ограничить пользователя при вводе в QLineEdit?
Отправлено: panAlexey от Февраль 23, 2010, 15:21
вроде после переопределения событий :
Код:
void QLineEdit::mousePressEvent(QMouseEvent *e)
void QLineEdit::mouseDoubleClickEvent(QMouseEvent *e)
осталось отменить возможность выделения текста...???
А нафига тебе вообще сделся этот лайнэдит в такой задаче?
Отрисовывай текст сам на QWidget и не парься..