1

キーを押しCtrlます。私の最初の機能はうまくいきます:

void MainWindow::keyPressEvent(QKeyEvent *event){
    if(event->modifiers()==Qt::CTRL){               //RETURNS TRUE
        ui->widget->groupmaking=true;
    } }

2 つ目は、どのようなキーがリリースされたかを確認するのに苦労しました。(だったCtrl)

void MainWindow::keyReleaseEvent(QKeyEvent *event){
    if(event->modifiers()==Qt::CTRL){               //RETURNS FALSE. WHY?
        ui->widget->groupmaking=false;
        ui->widget->groupexist=true;
    }
}

Ctrlでは、リリースを正しくキャッチする方法は?

4

1 に答える 1

4

Ctrlこのような動作の理由は、キーが既に解放されているため、キー解放イベントを取得した時点でキー修飾子がないためです。このようなチェックを実行する正しい方法は次のとおりです。

void keyReleaseEvent(QKeyEvent *event)
{
    if(event->key() == Qt::Key_Control) {
        [..]
    }
}
于 2013-12-23T15:38:15.063 に答える