Как отловить нажатие клавиши Ctrl?

Я нажимаю клавишу Ctrl. Моя первая функция работает нормально:

void MainWindow::keyPressEvent(QKeyEvent *event){
    if(event->modifiers()==Qt::CTRL){               //RETURNS TRUE
        ui->widget->groupmaking=true;
    } }

Во втором у меня проблемы с проверкой, какой ключ был выпущен. (Это был Ctrl)

void MainWindow::keyReleaseEvent(QKeyEvent *event){
    if(event->modifiers()==Qt::CTRL){               //RETURNS FALSE. WHY?
        ui->widget->groupmaking=false;
        ui->widget->groupexist=true;
    }
}

Итак, как правильно отловить Ctrl?

1 ответ

Решение

Причина такого поведения заключается в том, что в тот момент, когда вы получаете событие отпускания ключа, отсутствует модификатор ключа, поскольку клавиша Ctrl уже отпущена. Правильный способ выполнить такую ​​проверку будет:

void keyReleaseEvent(QKeyEvent *event)
{
    if(event->key() == Qt::Key_Control) {
        [..]
    }
}
Другие вопросы по тегам