Russian Qt Forum
Октябрь 01, 2024, 20:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Немогу перехватить Key_Enter и Key_Up/Down  (Прочитано 3560 раз)
Hrundel
Гость
« : Август 06, 2013, 16:31 »

Всем привет!

Какой-то мне не совсем понятный случай. В простейшем коде не могу перехватить  Key_Enter и Key_Up/Down.
Если кто-нибудь знает в чем причины, будьте любезны, объясните пожалуйста.

Вот сам код:

Код:
 void MainWindow::keyPressEvent(QKeyEvent* event)
 {
    switch(actualState)
    {
    case SPLASH_SCREEN:
        switch(event->key())
        {
        case Qt::Key_Escape:
            switchState(INTRO_CUT);
            break;
        }
        break;
    case MAIN_MENU:
        switch(event->key())
        {
        case Qt::Key_Escape:
            b->mainMenuKeyControl(KEY_ESC_MENU);
            break;
        case Qt::Key_Enter:
            qDebug() << "\n Enter gedruckt!!!";
            b->mainMenuKeyControl(KEY_DOWN_MENU);
            break;
        case Qt::Key_Space:
            qDebug() << "\n Space gedruckt!!!";
            b->mainMenuKeyControl(KEY_UP_MENU);
            break;
        case Qt::Key_W:
        case Qt::Key_Up:
            qDebug() << "\n Up gedruckt!!!";
            b->mainMenuKeyControl(KEY_UP_MENU);
            break;
        case Qt::Key_S:
       case Qt::Key_Down:
            b->mainMenuKeyControl(KEY_DOWN_MENU);
            break;
        case Qt::Key_Left:
            b->mainMenuKeyControl(KEY_LEFT_MENU);
            break;
        case Qt::Key_Right:
            b->mainMenuKeyControl(KEY_RIGHT_MENU);
            break;
        }
        break;
    case OPTIONS:
        break;
    }

    update();
}

Причем Space перехватывается, буквенные клавиши тоже.
« Последнее редактирование: Август 06, 2013, 19:46 от Hrundel » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Август 06, 2013, 16:35 »

Значит их обрабатывает кто-то из дочерних виджетов.
Записан
Hrundel
Гость
« Ответ #2 : Август 06, 2013, 16:37 »

У всех отобрал это право.
Ни в одном заголовке больше нет keyPressEvent(QKeyEvent* event);
Записан
_OLEGator_
Гость
« Ответ #3 : Август 06, 2013, 16:43 »

Минимальный проект прикрепляй - будем смотреть, что там у тебя.
Записан
_OLEGator_
Гость
« Ответ #4 : Август 06, 2013, 19:15 »

Enter перехватывается, все ок. Просто надо документацию читать внимательнее, Qt отдельно обрабатывает Enter на доп клаве и основной: Qt::Key_Return, Qt::Key_Enter.
По поводу вверх/вниз - необходимо, чтобы форма могла получать фокус - измени focusPolicy на Qt::WheelFocus, например.
« Последнее редактирование: Август 06, 2013, 19:23 от _OLEGator_ » Записан
Hrundel
Гость
« Ответ #5 : Август 06, 2013, 19:46 »

viewport->setFocusPolicy(Qt::NoFocus);  очень помог.

просто запретил ему фокус и все заработало без изменения кода.

Всем спасибо!!!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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