某些情况下,keyPressEvent无法匹配快捷键的解决办法
if (event->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); if (keyEvent->matches(QKeySequence::Save)) { // Do save } }
上面这段代码有时无法按预期执行。解决办法也很简单,像下面这样写即可:
if (event->type() == QEvent::KeyPress || event->type() == QEvent::ShortcutOverride) { QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); if (keyEvent->matches(QKeySequence::Save)) { // Do save } }
很简单,就是多匹配一个条件:
|| event->type() == QEvent::ShortcutOverride