Russian Qt Forum

Qt => Общие вопросы => Тема начата: ecspertiza от Ноябрь 19, 2012, 17:47



Название: Блокирование постоянных вызовов keyPressEvent
Отправлено: ecspertiza от Ноябрь 19, 2012, 17:47
Задача следующая при зажатом пробеле отловить только одно его нажатие, незнаю понятно ли объяснил :) Например пользователь нажал и держит зажатым пробем, но программа при этом должна отработать только один его вызов, до тех пор пока пользователь его не отпустит. С маком все хорошо, там проблем нет, но под виндой это выглядит как постоянный вызов

keyPressEvent
keyReleaseEvent

можно ли победить как то данную проблему ?


Название: Re: Блокирование постоянных вызовов keyPressEvent
Отправлено: Bepec от Ноябрь 19, 2012, 17:50
Там флаг автоповтора имеется вроде.

isAutoRepeat () const


Название: Re: Блокирование постоянных вызовов keyPressEvent
Отправлено: kambala от Ноябрь 19, 2012, 17:51
использовать флажок в eventFilter'е? или ты хочешь, чтобы событие вообще не генерировалось?


Название: Re: Блокирование постоянных вызовов keyPressEvent
Отправлено: ecspertiza от Ноябрь 19, 2012, 18:02
щас почитаю про isAutoRepeat спасиб.

использовать флажок в eventFilter'е? или ты хочешь, чтобы событие вообще не генерировалось?

Хочу чтоб генерировалось, но один раз, как допустим при нажатии, нажали получили keyPressEvent, отпустили получили keyReleaseEvent, а между этим ничего :)


Название: Re: Блокирование постоянных вызовов keyPressEvent
Отправлено: Bepec от Ноябрь 19, 2012, 18:03
Авторепет это и есть - бесконечный повтор нажатий отжатий. Так что условие на false и усё в чемодане :)


Название: Re: Блокирование постоянных вызовов keyPressEvent
Отправлено: ecspertiza от Ноябрь 19, 2012, 18:31
isAutoRepeat то что нужно, спасибо.