Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Hrundel от Август 06, 2013, 16:31



Название: [РЕШЕНО] Немогу перехватить Key_Enter и Key_Up/Down
Отправлено: 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 перехватывается, буквенные клавиши тоже.


Название: Re: Ерунда какая-то!!! Немогу перехватить Key_Enter и Key_Up/Down
Отправлено: Old от Август 06, 2013, 16:35
Значит их обрабатывает кто-то из дочерних виджетов.


Название: Re: Ерунда какая-то!!! Немогу перехватить Key_Enter и Key_Up/Down
Отправлено: Hrundel от Август 06, 2013, 16:37
У всех отобрал это право.
Ни в одном заголовке больше нет keyPressEvent(QKeyEvent* event);


Название: Re: Ерунда какая-то!!! Немогу перехватить Key_Enter и Key_Up/Down
Отправлено: _OLEGator_ от Август 06, 2013, 16:43
Минимальный проект прикрепляй - будем смотреть, что там у тебя.


Название: Re: Ерунда какая-то!!! Немогу перехватить Key_Enter и Key_Up/Down
Отправлено: _OLEGator_ от Август 06, 2013, 19:15
Enter перехватывается, все ок. Просто надо документацию читать внимательнее, Qt отдельно обрабатывает Enter на доп клаве и основной: Qt::Key_Return, Qt::Key_Enter.
По поводу вверх/вниз - необходимо, чтобы форма могла получать фокус - измени focusPolicy на Qt::WheelFocus, например.


Название: Re: Ерунда какая-то!!! Немогу перехватить Key_Enter и Key_Up/Down
Отправлено: Hrundel от Август 06, 2013, 19:46
viewport->setFocusPolicy(Qt::NoFocus);  очень помог.

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

Всем спасибо!!!