Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: lisarden от Апрель 01, 2011, 20:07



Название: как менять фокус для нескольких QLineEdit?
Отправлено: lisarden от Апрель 01, 2011, 20:07
Всем привет!

у меня дейвайс, на котором физически есть только кнопки-стрелки (курсор) и нет TAB. Как перемещаться по нескольким QLIneEdit только с помощью курсора?

Я так понимаю, что надо что-то переопределить, но что?

признателен за любые советы!


Название: Re: как менять фокус для нескольких QLineEdit?
Отправлено: madRoger от Апрель 01, 2011, 20:28
Нужно создать класс-потомок от QLineEdit и переопределить в нем событие keyPressEvent. Или реализовать eventFilter и установить его для класса.
В keyPressEvent или eventFilter(смотря что реализовать) проверять нажатую клавишу:
Если это Down или Up - переход на поле вниз или вверх.
Если Left и курсор в начале поля(на 0 позиции) или Right и курсор в конце поля(после последнего символа) - переход на поле влево или вправо.


Название: Re: как менять фокус для нескольких QLineEdit?
Отправлено: lisarden от Апрель 01, 2011, 20:44
Спасибо за ответ!

попутно возник вопрос: перейти с одного QLIneEdit на другой? ПРобую setFocus, но не работает


Название: Re: как менять фокус для нескольких QLineEdit?
Отправлено: madRoger от Апрель 01, 2011, 21:08
Проверил все на компе. У меня все работает.

setFocus(Qt::OtherFocusReason);


Название: Re: как менять фокус для нескольких QLineEdit?
Отправлено: lisarden от Апрель 01, 2011, 21:20
с OtherFocusReason заработало! :)