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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QSpinBox + запрет ввода пользователем [РЕШЕНО]  (Прочитано 11419 раз)
slan
Гость
« : Февраль 24, 2012, 11:45 »

Добрый день. Можно ли сабж сделать? Т.е. чтобы значения менялись только стрелочками с заданным шагом setSingleStep
« Последнее редактирование: Февраль 24, 2012, 15:42 от slan » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Февраль 24, 2012, 13:54 »

попробуй унаследоваться от QSpinBox и сделать пустым keyPressEvent (или в фильтре событий для нужного объекта и события QEvent::KeyPress сразу возврашать true)
« Последнее редактирование: Февраль 24, 2012, 13:56 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
_OLEGator_
Гость
« Ответ #2 : Февраль 24, 2012, 14:29 »

Код
C++ (Qt)
void setReadOnly ( bool r )
Оно?
Записан
slan
Гость
« Ответ #3 : Февраль 24, 2012, 15:02 »

Код
C++ (Qt)
void setReadOnly ( bool r )
Оно?
Нет не оно. Стрелочки тогда тоже не нажимаются
Записан
Bepec
Гость
« Ответ #4 : Февраль 24, 2012, 15:20 »

Как извращенное решение - при получении фокуса виджетом, включать grabKeyboard для формы скажем. В результате все нажатия уйдут "мимо" спинбокса. А при потере фокуса снимать releaseKeyboard.

PS извращённое даже на мой взгляд решение, но... решение ведь!

update: ставим спинбоксу NoFocus. Вуаля. Тема решена.

Бгг 2 минуты на решение. Нормалёк.
« Последнее редактирование: Февраль 24, 2012, 15:22 от Bepec » Записан
slan
Гость
« Ответ #5 : Февраль 24, 2012, 15:23 »

попробуй унаследоваться от QSpinBox и сделать пустым keyPressEvent
Так и сделал. Спасибо.
p.s. Изначально так и хотел, просто подумал а вдруг есть какой стандартный механизм
Записан
Bepec
Гость
« Ответ #6 : Февраль 24, 2012, 15:23 »

Подмигивающий
Записан
slan
Гость
« Ответ #7 : Февраль 24, 2012, 15:34 »

Как извращенное решение - при получении фокуса виджетом, включать grabKeyboard для формы скажем. В результате все нажатия уйдут "мимо" спинбокса. А при потере фокуса снимать releaseKeyboard.

PS извращённое даже на мой взгляд решение, но... решение ведь!

update: ставим спинбоксу NoFocus. Вуаля. Тема решена.

Бгг 2 минуты на решение. Нормалёк.

а ведь действительно: setFocusPolicy(Qt::NoFocus);
пасиба Улыбающийся
Записан
Bepec
Гость
« Ответ #8 : Февраль 24, 2012, 15:35 »

В 1 сообщении тему поправь на "%Название_темы [РЕШЕНО]".

Чтоб другим проще было Подмигивающий
« Последнее редактирование: Февраль 24, 2012, 15:37 от Bepec » Записан
_OLEGator_
Гость
« Ответ #9 : Февраль 24, 2012, 16:52 »

Код
C++ (Qt)
QLineEdit * QAbstractSpinBox::lineEdit ()
void QLineEdit::setReadOnly ( bool )
Записан
Bepec
Гость
« Ответ #10 : Февраль 25, 2012, 08:56 »

OLEGator - это уже Хак Подмигивающий
Записан
twp
Гость
« Ответ #11 : Февраль 25, 2012, 11:54 »

OLEGator - это уже Хак Подмигивающий
Как раз наоборот, ибо продвинутые пользователи (которые используют по большей части клаву) передадут пару ласковых слов за такое "правильное" решение. А в решении, что предложил _OLEGator_ этого недостатка нет и можно переходить по элементам клавишей Tab и изменять значения клавишами вверх/вниз
Записан
_OLEGator_
Гость
« Ответ #12 : Февраль 25, 2012, 12:16 »

to Bepec
как раз не хак, twp уже объяснил почему. Дополнительно - нельзя будет установить фокус на элемент и воспользоваться клавишами [Вверх] и [Вниз], [Page Up] и [Page Down] для увеличения и уменьшения значения.
Записан
Bepec
Гость
« Ответ #13 : Февраль 26, 2012, 09:21 »

А есть ли уверенность в том, что это работает?

В принципе да, пользователи привыкшие к клаве будут недовольны.

Меня ввели в заблуждения первые комментарии (где предлагалось тупо все клавиатурные нажатия пропускать Подмигивающий )
Записан
_OLEGator_
Гость
« Ответ #14 : Февраль 26, 2012, 18:15 »

Недосмотрел... Проблема только, что обе эти функции protected.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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