如何区分Alt按和Alt + 3按

时间:2015-12-28 08:48:02

标签: qt

我有一个问题,如何区分Alt按和Alt + 3按。 我有两个不同的行动。 Alt - 显示菜单栏 Alt + 3 - 将第3个窗格添加到我的主窗口中。

我如何区分这两个事件? Problém(在这一刻),当我按下Alt + 3时,会调用Booth动作。

void cc::keyPressEvent(QKeyEvent * event)
{
    switch (event->key())
    {
        case Qt::Key_3:
            if(event->modifiers() == Qt::AltModifier)
            {
                if(ui->widget_3->isVisible())
                    ui->widget_3->hide();
                else
                    ui->widget_3->show();
            }
            break;
        case Qt::Key_Alt:
            if(!menuBar()->isVisible())
                ui->menuBar->show();
            else
                ui->menuBar->hide();
            break;
        default: QWidget::keyPressEvent(event);
    }
}

我知道,我可以使用计数器并等待一段时间并在时间结束时显示菜单(2s)。如果用户按下Alt + 3并且如果他没有按下它2秒,我只显示3.窗格。如果他们只按三次alt,我会显示菜单。

看起来有点复杂。我不能做一些更简单的事情吗?

1 个答案:

答案 0 :(得分:1)

您应该将与仅限Alt的快捷方式相关的代码放在void cc::keyReleaseEvent(QKeyEvent * event)事件中。一旦密钥被释放,就会发生此事件。

所以当你按下Alt时,没有任何反应,如果你发布它,那么显示菜单栏"会发生,但是如果你继续按下并按3,那么其他代码就会发生。