2013-12-23 103 views
1

我按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释放?

+2

如果您已找到解决方案,请将其作为您的问题的答案,并最终接受您自己的答案。 –

回答

4

此类行为的原因是,当您获取密钥发布事件时,此时没有密钥修改器,因为Ctrl密钥已被释放。执行此检查的正确方法是:

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