如何捕获Ctrl键释放?

时间:2013-12-23 15:28:04

标签: qt keyrelease

我按 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 个答案:

答案 0 :(得分:4)

这种行为的原因是,当您获得密钥释放事件时,此刻没有密钥修饰符,因为 Ctrl 键已经被释放。执行此类检查的正确方法是:

void keyReleaseEvent(QKeyEvent *event)
{
    if(event->key() == Qt::Key_Control) {
        [..]
    }
}