Как отловить нажатие клавиши 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) {
[..]
}
}