|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.08.2012, 17:43 | #1 |
Новичок
Джуниор
Регистрация: 23.08.2012
Сообщений: 1
|
обработка нажатий клавиш в Qt
//Если ошибся с веткой форума, пожалуйста перенесите.
Пишу на С++ с испльзованием QGLWidget. При обработке нажатых клавиш клавиатуры возникает следующая проблема: Когдя я зажимаю клавишу, камера перемещается на один шаг, затем замирает где-то на полсекундыи начинает двигаться уже без пауз, до следующего нажатия. Код:
keyPressEvent дает такой-же глюк. Хотя может это замаскированная фича. В целом нужно какая-то фича, чтобы реакция на клавиши была как в шутерах(быстро, решительно) Последний раз редактировалось SiNoNoto; 23.08.2012 в 18:29. |
25.08.2012, 09:50 | #2 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
Все работает верно! =) При вводе текста, зажми клавишу(например буквы) и сам воочую увидишь. Это сделано для удобства набора текста.
А теперь по порядку. У тебя должен быть где-то основной цикл игры(будь то таймер или while(true){} ). Вот как раз в нем и нужно обрабатывать нажатые клавиши. Заведи массив bool KeyboardState[255] = {0}; и при событии нажатия клавиши устанавливаешь соответствующему элементу массива true, а когда отпущена false; Код:
|
01.05.2014, 17:18 | #3 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Десятый раз натыкаюсь на эту тему. Надо решить один спорный вопрос. В QT4,5 Метод key() класса QKeyEvent нынче не возращает ASCII код. например для клавиши ESC это 16777216. Делать такой здоровенный массив глупо. Как из этого достать ASCII? Остановился на QKeyEvent::text.toAscii.toHex(), а это не есть хорошо, т.к. нужен int.
----- Все проще простого. Код:
Последний раз редактировалось _PROGRAMM_; 01.05.2014 в 17:27. |
01.05.2014, 17:42 | #4 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Цитата:
К стати, а зачем вам массив из 255 элементов под всю таблицу ASCII ? У вас что, все этик лавиши (половины из которых даже на клавиатуре нет, лол) задействованы в игре? Есть смысл делать массив только под используемые в игре клавиши управления.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
|
01.05.2014, 18:21 | #5 | ||
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Цитата:
Цитата:
|
||
02.05.2014, 01:43 | #6 | |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
Цитата:
попробуйте этот вариант: Код:
|
|
02.05.2014, 15:11 | #7 | |||||
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Последний раз редактировалось _PROGRAMM_; 02.05.2014 в 15:29. |
|||||
03.05.2014, 11:19 | #8 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Цитата:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
|
28.06.2017, 11:39 | #9 |
Пользователь
Регистрация: 25.10.2011
Сообщений: 14
|
я может чего-то не понимаю, но коды клавиш
влево - 75, вправо - 77 qDebug() << event->key() выдаёт влево - 16777234, вправо - 16777236 qDebug() << event->nativeScanCode() выдаёт влево - 331, вправо - 333 клавиша ввода - 13, но 16777220 key 28 native Последний раз редактировалось Fabeldyr; 28.06.2017 в 12:35. |
28.06.2017, 16:42 | #10 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
http://doc.qt.io/qt-5/qt.html#Key-enum nativeScanCode() см исходный код Для виндоуса https://code.woboq.org/qt5/qtbase/sr...r.cpp.html#636 Для линукса https://code.woboq.org/qt5/include/S...cancode.h.html
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обработка нажатий клавиш во время паузы | iov | Microsoft Office Excel | 4 | 04.05.2012 18:59 |
Эмуляция нажатий клавиш в играх | Boris-Britva | Общие вопросы Delphi | 6 | 24.06.2011 15:20 |
Эмуляция нажатий клавиш | BorisBritva | Общие вопросы Delphi | 1 | 01.11.2010 13:09 |
симуляция нажатий клавиш | 4321 | Общие вопросы Delphi | 14 | 23.10.2008 23:18 |
отслеживание нажатий клавиш | Артэс | Win Api | 6 | 14.06.2008 20:02 |