我有一个问题,如何区分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,我会显示菜单。
看起来有点复杂。我不能做一些更简单的事情吗?
答案 0 :(得分:1)
您应该将与仅限Alt的快捷方式相关的代码放在void cc::keyReleaseEvent(QKeyEvent * event)
事件中。一旦密钥被释放,就会发生此事件。
所以当你按下Alt时,没有任何反应,如果你发布它,那么显示菜单栏"会发生,但是如果你继续按下并按3,那么其他代码就会发生。