Russian Qt Forum
Октябрь 01, 2024, 02:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как ограничить пользователя при вводе в QLineEdit?  (Прочитано 6090 раз)
zoro86
Гость
« : Февраль 23, 2010, 07:50 »

есть экранная клавиатура с помощью которой осуществляется ввод данных,
при этом используется ТачСкрин на мониторе в качестве инструмента,
необходимо сделать так чтобы у пользователя не было возможности менять положение курсора на поле ввода QLineEdit,
при этом он мог пользоваться только клавиатурой, то есть как бы кликая по QLineEdit положение курсора не менялось,
помогите как это можно осуществить...?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 23, 2010, 10:11 »

Переопредели void QWidget::mousePressEvent ( QMouseEvent * event ).
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
zoro86
Гость
« Ответ #2 : Февраль 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 сделана... как быть??
Записан
BRE
Гость
« Ответ #3 : Февраль 23, 2010, 12:24 »

Тебе нужно определить класс-наследник от QLineEdit и в нем переопределить mousePressEvent.
И использовать этот класс на диалоге.
Записан
SABROG
Гость
« Ответ #4 : Февраль 23, 2010, 13:48 »

А в случае с виртуальной клавиатурой установка тупо setEnabled(false) или setReadOnly(true) не прокатит?

Или в слоте на void QLineEdit::cursorPositionChanged ( int old, int new )   [signal] вызывать setCursorPosition(old) (правда тут рекурсия может быть, надо проверять)
« Последнее редактирование: Февраль 23, 2010, 13:50 от SABROG » Записан
zoro86
Гость
« Ответ #5 : Февраль 23, 2010, 14:21 »

вроде после переопределения событий :
Код:
void QLineEdit::mousePressEvent(QMouseEvent *e)
void QLineEdit::mouseDoubleClickEvent(QMouseEvent *e)

осталось отменить возможность выделения текста...Непонимающий
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #6 : Февраль 23, 2010, 15:21 »

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

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.