Меня не устраивает один момент. Я не уверен, нужно ли считать это проблемой, а тем более большой проблемой. Однако «это» имеет место быть. И, в целом, если будет возможно отделаться легко — я хотел бы от этого избавиться в своем самописном приложении.
Итак, что же это?
Открываете свой любимый текстовый редактор, открываете в нем файл и нажимаете Ctrl+S и удерживаете нажатым. Что мы видим? Правильно — оно пытается сохраниться множество раз. Причем, если вы подержите подольше — автоповторенные команды накопятся в буфере и будут еще какое-то время выполняться, т.е. вы уже отпустили зажатые клавиши, а оно все еще много раз сохраняется.
Или запустите что-нибудь в vlc, нажмите и удерживайте пробел.
Даже притянутый за уши пример с сохранением может быть критичным в каком-либо приложении, которому приходится много чего перелопачивать, чтобы сохранить состояние в файл.
Но конкретно в моем случае есть некоторое кол-во мест, где я хотел бы поменять такое поведение.
Но это не возможно сделать просто, когда в пунктах меню у меня работает и клик и хоткеи. Так, мне придется отнаследоваться от QAction, реализовать два-три метода c перехватом ивентов, определять авто-повторы.
Я пробовал игнорить только авто-повторы — этого не достаточно, он пропускает некоторые из них считая что это не повтор, внешне получается эдакий «медленный» авто-повтор. Таким образом нужно блокироваться после первого и не выпускать уже ничего, пока клавиши не отпустят.
Но и это еще не все. Придется перехватить и triggered() сигнал от клика на QAction чтобы можно было быть заблокированным и не выпустить «грязный» сигнал клика во внешний мир или заблокировать и разблокировать по клику.
И вот скажите мне — неужели нет такого кейса в Qt? Я не нагуглил ничего хорошего. Неужели никто никогда не думал про такую необходимость? И насколько это нормально — оборачивать тонны Qt кода своими тоннами кода чтобы побороть стандартное поведение?
Если это нормально — хрен с ним, я смирюсь и реализую.
Но если есть более простой способ достигнуть желаемого — я буду премного благодарен за подсказку!
UPD: Тоже самое хотелось бы решить и для тачпада ноута, т.к. скролл ивент у него отличается от скролл ивента колеса мыши — он еще некоторое время, когда палец уже давно отпущен от скролл-полосы, генерирует уменьшающуюся в амплитуде скролл-дельту для «красоты» smooth-скролла, но мне оно в хрен не впилось.