Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Январь 18, 2015, 10:36



Название: События клавиатуры
Отправлено: Igors от Январь 18, 2015, 10:36
Добрый день

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

Спасибо


Название: Re: События клавиатуры
Отправлено: GreatSnake от Январь 18, 2015, 11:54
Самое простое перегрузить
Код
C++ (Qt)
QApplication::notify ( QObject * receiver, QEvent * event )

Но красивее будет завести базу, в которой будет поддерживаться эта фича.


Название: Re: События клавиатуры
Отправлено: Fat-Zer от Январь 18, 2015, 12:01
в enterEvent проверять нажат ли альт/пробел и ставить нужный курсор+ забирать на себя фокус... потом вплоть до leaveEvent смотреть keyPressEvent/keyReleaseEvent... без того чтобы отбирать фокус ничего путного в голову пока не приходит...



Название: Re: События клавиатуры
Отправлено: Igors от Январь 18, 2015, 12:12
Самое простое перегрузить
Код
C++ (Qt)
QApplication::notify ( QObject * receiver, QEvent * event )
Да, вроде очевидно, но

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

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

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

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


Название: Re: События клавиатуры
Отправлено: GreatSnake от Январь 18, 2015, 14:03
А шо то за база ??? Можно подробнее?
Реализовать базовый класс, от которого уже наследовать эти несколько виджетов.