我按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释放?
这种行为的原因是,当您获得键释放事件时,目前没有键修饰符,因为 Ctrl 键已经释放。执行此类检查的正确方法是:
void keyReleaseEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Control) {
[..]
}
}