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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обработка двух одновременно клавиш  (Прочитано 5346 раз)
fuCtor
Гость
« : Декабря 02, 2009, 14:55 »

Как можно обработать две одновременно нажатые клавиши, к примеру стрелки вверх и влево? Для QKeySequence не подходит, а событие о нажатии приходит только для одной.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Декабря 02, 2009, 17:02 »

>>а событие о нажатии приходит только для одной.
А может приходит несколько событий, одно за другим?
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Декабря 02, 2009, 17:04 »

А вообще QKeySequence поддерживает стиль GNU Emacs :

 QKeySequence(tr("Ctrl+X, Ctrl+C"))
 QKeySequence(Qt::CTRL + Qt::Key_X, Qt::CTRL + Qt::Key_C)
Записан

Юра.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Декабря 02, 2009, 17:18 »

Как можно обработать две одновременно нажатые клавиши, к примеру стрелки вверх и влево? Для QKeySequence не подходит, а событие о нажатии приходит только для одной.
Как Юра сказал, приходят 2 события последовательно, поэтому надо перекрывать keyPressEvent и keyReleaseEvent и отслеживать нажато/отжато
Записан
fuCtor
Гость
« Ответ #4 : Декабря 03, 2009, 08:32 »

Так и сделал, только пришлось еще контролировать момент потери фокуса, иначе не приходило сообщение о отпускании клавиш.
Записан
sendevent
Гость
« Ответ #5 : Декабря 03, 2009, 15:31 »

Qt::WA_KeyCompression:
Цитировать
<...>By default key compression is off, so widgets receive one key press event for each key press (or more, since autorepeat is usually on). If you turn it on and your program doesn't keep up with key input, Qt may try to compress key events so that more than one character can be processed in each event<...>
Записан
uriel
Гость
« Ответ #6 : Декабря 03, 2009, 16:14 »

А как же окончание? Улыбающийся
Цитировать
Qt performs key event compression only for printable characters. Qt::Modifier keys, cursor movement keys, function keys and miscellaneous action keys (e.g. Escape, Enter, Backspace, PrintScreen) will stop key event compression, even if there are more compressible key events available. Platforms other than Mac and X11 do not support this compression, in which case turning it on will have no effect. This is set/cleared by the widget's author.
Записан
sendevent
Гость
« Ответ #7 : Декабря 03, 2009, 16:55 »

А как же окончание? Улыбающийся
Хе-хе-хе, каюсь, протупил - сам использовал как раз для чаров, про остальное как-то не обратил внимания.
*пошел делать харакирю
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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