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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: События клавиатуры  (Прочитано 2650 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Январь 18, 2015, 10:36 »

Добрый день

Есть виджет который должен иметь "курсор-рука" если юзер нажал и держит пробел, и "курсор-палец" если нажата клавиша Alt. Сейчас это сделано "по таймеру" (т.е. тупо проверяется состояние клавиш и делается setCursor). Как это сделать на событиях, учитывая что окон с такими виджетами несколько (до 10, обычно открыто 4-5). Вроде должно быть "совсем просто" - но что-то не соображу  Улыбающийся

Спасибо
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Январь 18, 2015, 11:54 »

Самое простое перегрузить
Код
C++ (Qt)
QApplication::notify ( QObject * receiver, QEvent * event )

Но красивее будет завести базу, в которой будет поддерживаться эта фича.
« Последнее редактирование: Январь 18, 2015, 11:57 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Fat-Zer
Гость
« Ответ #2 : Январь 18, 2015, 12:01 »

в enterEvent проверять нажат ли альт/пробел и ставить нужный курсор+ забирать на себя фокус... потом вплоть до leaveEvent смотреть keyPressEvent/keyReleaseEvent... без того чтобы отбирать фокус ничего путного в голову пока не приходит...

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Январь 18, 2015, 12:12 »

Самое простое перегрузить
Код
C++ (Qt)
QApplication::notify ( QObject * receiver, QEvent * event )
Да, вроде очевидно, но

- а если это "целевые" нажатия - напр для QLineEdit?
- придется пробегаться по окнам, выцеплять из них нужный виджет чтобы сделать setCursor. Не то чтобы сложно, но как-то громоздко. Хотелось бы сосредоточить все в самом виджете, а не "извне"  

Но красивее будет завести базу, в которой будет поддерживаться эта фича.
А шо то за база Непонимающий Можно подробнее?

Может подключить QEvent::Enterr/Exit ?

в enterEvent проверять нажат ли альт/пробел и ставить нужный курсор+ забирать на себя фокус... потом вплоть до leaveEvent смотреть keyPressEvent/keyReleaseEvent... без того чтобы отбирать фокус ничего путного в голову пока не приходит...
Виджет не имеет фокуса. И придет ли keyReleaseEvent виджету - хз
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Январь 18, 2015, 14:03 »

А шо то за база Непонимающий Можно подробнее?
Реализовать базовый класс, от которого уже наследовать эти несколько виджетов.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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