2013-12-23 99 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) { 
     [..] 
    } 
}