如何區分Alt按和Alt + 3按我有一個問題。 我有兩個不同的操作。 Alt - 顯示菜單欄 Alt + 3 - 將第3個窗格添加到我的主窗口中。如何區分Alt按和Alt + 3按
如何區分這兩個事件?問題是(在這個時候),當我按下Alt + 3時。布斯動作被調用。
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.窗格。如果他們只按3秒鐘,我會顯示菜單。
看起來有點複雜。我能做些簡單的事嗎?
我認爲唯一理智的方法是讓「ALT only」操作對keyReleaseEvent()做出反應。這裏例如在Firefox Alt與Alt + 3不依賴於時機(我認爲這太可怕了),但如果我釋放Alt並且沒有其他鍵被按下,則Alt會觸發。您是否嘗試簡單地將QAction與各自的快捷鍵一起使用?也許它只是做正確的事情。 –
弗蘭克,你有權利。這正是我的意思。謝謝。 – exo