Russian Qt Forum
Июня 08, 2025, 05:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

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

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

Сообщений: 5877


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


Просмотр профиля 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

Сообщений: 865

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


Просмотр профиля
« Ответ #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]   Вверх
  Печать  
 
Перейти в:  


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