У меня есть рабочее приложение. Я добавил menuBar() в главное окно с некоторыми меню. Затем я спрятал его, чтобы освободить пространство экрана. Я написал код ниже, так что, когда пользователь нажимает клавишу ALT, панель меню появляется, если она скрыта, и она скрывается, если она отображается.Как сфокусировать menuBar() с Qt
void MainWindow::keyPressEvent(QKeyEvent *k) {
if(k->modifiers() & Qt::AltModifier) {
menuBar()->setHidden(!menuBar()->isHidden());
if(menuBar()->hasFocus()) {
QMessageBox::information(this, "Info", "Focus !");
}
}
}
Как вы можете видеть, я также добавил QMessageBox, чтобы увидеть, когда Menubar имеет фокус. И это поле появляется только в половине случаев. Это выглядит следующим образом:
- приложения, запущенные, Menubar скрытого
- Я нажмите ALT, отображается строка меню, не окно сообщения, не фокус
- жмет ALT, Menubar скрытого
- I нажмите ALT, отображается строка меню , окно сообщения, фокус
- жму ALT, Menubar скрытого
- Я нажмите ALT, строка меню отображается, не окно сообщения, не фокус
- жмет ALT, Menubar скрытого
- I нажмите ALT, Menubar отображается, окно сообщения, фокус
- т.д.
Как убедиться, что при отображении Menubar, он всегда имеет фокус?
Да, я уже пробовал это. Я просто попробовал еще раз, и теперь у меня есть окно сообщений каждый раз, когда отображается меню, но в меню «Файл» нет подсветки (это выделение показывает, что основное внимание уделяется строке меню). Из того, что я вижу, основное внимание уделяется меню в течение одного небольшого момента и идет куда-то еще. Что может быть причиной этого? –