Russian Qt Forum
Мая 15, 2025, 09:36
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Обработка двух одновременно клавиш
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Обработка двух одновременно клавиш (Прочитано 5345 раз)
fuCtor
Гость
Обработка двух одновременно клавиш
«
:
Декабря 02, 2009, 14:55 »
Как можно обработать две одновременно нажатые клавиши, к примеру стрелки вверх и влево? Для QKeySequence не подходит, а событие о нажатии приходит только для одной.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Обработка двух одновременно клавиш
«
Ответ #1 :
Декабря 02, 2009, 17:02 »
>>а событие о нажатии приходит только для одной.
А может приходит несколько событий, одно за другим?
Записан
Юра.
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Обработка двух одновременно клавиш
«
Ответ #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
Сообщений: 11445
Re: Обработка двух одновременно клавиш
«
Ответ #3 :
Декабря 02, 2009, 17:18 »
Цитата: fuCtor от Декабря 02, 2009, 14:55
Как можно обработать две одновременно нажатые клавиши, к примеру стрелки вверх и влево? Для QKeySequence не подходит, а событие о нажатии приходит только для одной.
Как Юра сказал, приходят 2 события последовательно, поэтому надо перекрывать keyPressEvent и keyReleaseEvent и отслеживать нажато/отжато
Записан
fuCtor
Гость
Re: Обработка двух одновременно клавиш
«
Ответ #4 :
Декабря 03, 2009, 08:32 »
Так и сделал, только пришлось еще контролировать момент потери фокуса, иначе не приходило сообщение о отпускании клавиш.
Записан
sendevent
Гость
Re: Обработка двух одновременно клавиш
«
Ответ #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
Гость
Re: Обработка двух одновременно клавиш
«
Ответ #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
Гость
Re: Обработка двух одновременно клавиш
«
Ответ #7 :
Декабря 03, 2009, 16:55 »
Цитата: uriel от Декабря 03, 2009, 16:14
А как же окончание?
Хе-хе-хе, каюсь, протупил - сам использовал как раз для чаров, про остальное как-то не обратил внимания.
*пошел делать харакирю
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...