Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2014, 14:46   #1
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию Меню, клавиатура

При создании меню столкнулся с такой проблемой.
Я использую QStackedWidget для смены виджетов. Но есть одна проблема. При переходе в главное меню или в меню уровней, окно, иногда, заполняется красным цветом. Я так и не понял почему. Если растянуть окно(вызвать функцию перерисовки), то красный цвет пропадает и окно перерисовывается нормально, отображаются все кнопки и фон меню.
Может кто сталкивался с такой проблемой??? Помогите пожалуйста.

Второй вопрос.
Есть две функции обработки нажатия клавиш на клавиатуре
Код:
void MainWindow::keyPressEvent(QKeyEvent * pe) {
    if(level1)
      l1 -> keyPressEvent(pe);
    if(level2)
      l2 -> keyPressEvent(pe);
    if(level3)
      l3 -> keyPressEvent(pe);
    if(level4)
      l4 -> keyPressEvent(pe);
    if(level5)
      l5 -> keyPressEvent(pe);
    qDebug() << "yes";
    pe -> accept();
    QWidget::keyPressEvent(pe);
}

void MainWindow::keyReleaseEvent(QKeyEvent * pe) {
    if(level1)
      l1 -> keyReleaseEvent(pe);
    if(level2)
      l2 -> keyReleaseEvent(pe);
    if(level3)
      l3 -> keyReleaseEvent(pe);
    if(level4)
      l4 -> keyReleaseEvent(pe);
    if(level5)
      l5 -> keyReleaseEvent(pe);
    if(pe -> isAutoRepeat()) {
        return;
    }
    qDebug() << "no";
}
Я так и не понял почему вывод qDebug() при нажатии на клавишу:
yes
no
yes
no
yes
no
yes
no
Вроде раньше строчки
pe -> accept();
QWidget::keyPressEvent(pe);
и
if(pe -> isAutoRepeat()) {
return;
}
спасали, а сейчас нет. Почему???
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 26.01.2014, 17:55   #2
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Кое-что нашел. Если удалить setCentralWidget(game_stack), то идет правильная обработка клавиатуры. Если зажать клавишу то выводится только yes, если потом отпусть то no, а не попеременно. Я так и не понял как виджет game_stack влияет на обработку клавиатуры или мне нужно перегрузить функции обработки клавиатуры в QStackedWidget??
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 28.01.2014, 16:27   #3
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Windows обрабатывает клавиатуру и на нажатие и на отпускание клавиш. Каждому событию назначается разный код. Попробуйте посчитать в переменной число нажатий и выполнять действие по истечении нужного вам числа, ...после выполнения обнуляйте переменную счётчика.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 28.01.2014, 19:58   #4
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Я на Линуксе программирую!
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 28.01.2014, 20:21   #5
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от ser70 Посмотреть сообщение
Я на Линуксе программирую!
Не имеет значения, счётчик программируется вручную. Одно нажатие -> запись в переменную +1, наберётся 2 -> сменить флаг на "no", переменную обнулить. Пока счётчик числится как 1, будет "Yes". Улавливаете?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 29.01.2014, 01:26   #6
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Дело в том, что когда я запускал программу на линуксе, то вывод программы меня не устраивал, а когда я эту же программу запустил на видовсе, то все заработало правильно. Улаваливаете?
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
клавиатура kaljan775 Общие вопросы C/C++ 2 23.11.2010 01:48
Клавиатура zumm Паскаль, Turbo Pascal, PascalABC.NET 12 27.06.2010 11:16
клавиатура и си itwaswritten Помощь студентам 1 19.05.2010 14:47
Клавиатура RealSHELS Общие вопросы Delphi 6 29.03.2008 15:52
Клавиатура Pusher Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 22.03.2008 00:47