【问题标题】:How to catch Ctrl key release?如何捕捉 Ctrl 键释放?
【发布时间】:2014-01-11 20:18:17
【问题描述】:

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

【问题讨论】:

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

标签: qt keyrelease


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多