Russian Qt Forum
Ноябрь 26, 2024, 16:33
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Обработка двух одновременно клавиш
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Обработка двух одновременно клавиш (Прочитано 5189 раз)
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...