C++ C++;菜单打开时,键盘快捷键不会触发菜单中的Qt操作

C++ C++;菜单打开时,键盘快捷键不会触发菜单中的Qt操作,c++,qt,keyboard-shortcuts,C++,Qt,Keyboard Shortcuts,我正在Linux上构建一个Qt应用程序。我在主窗口中有一个菜单栏,其中有两个菜单,每个菜单都有几个动作,所有动作都有与其关联的键盘快捷键。当菜单未打开时,键盘快捷键起作用,但当其中一个菜单打开时,所有快捷键均不起作用 在使用[menuobject]->addAction将操作添加到各自的菜单之前,使用setShortcut将快捷方式添加到操作中。所有操作都将主窗口作为其父窗口。阅读之后,我添加了对addAction的调用,将该操作添加到主窗口。这并没有解决问题 其中一个菜单项的代码示例: //I

我正在Linux上构建一个Qt应用程序。我在主窗口中有一个菜单栏,其中有两个菜单,每个菜单都有几个动作,所有动作都有与其关联的键盘快捷键。当菜单未打开时,键盘快捷键起作用,但当其中一个菜单打开时,所有快捷键均不起作用

在使用[menuobject]->addAction将操作添加到各自的菜单之前,使用setShortcut将快捷方式添加到操作中。所有操作都将主窗口作为其父窗口。阅读之后,我添加了对addAction的调用,将该操作添加到主窗口。这并没有解决问题

其中一个菜单项的代码示例:

//In the main window constructor
gameQuit = new QAction(QString(tr("&Quit\tCtrl+Q")), this);
gameQuit->setShortcut(QKeySequence(Qt::Key_Q | Qt::CTRL));
addAction(gameQuit);

connect(gameQuit, SIGNAL(triggered()), this, SLOT(close()));

gameMenu = menuBar()->addMenu(QString(tr("&Game")));
gameMenu->addAction(gameQuit);
在QtCreator中,我假设它是用Qt编写的,当菜单打开时,菜单项的键盘快捷键确实起作用,所以我认为一定有办法


感谢您的帮助。

我从引用的帖子的评论中得到了一些建议(这些评论遭到了指责,这就是我最初没有尝试的原因),我使用[actionobject]->setShortcutContext()修改了快捷方式上下文。显然,默认设置在我的场景中不起作用

我首先尝试设置为Qt::WindowShortcut,但没有成功。Qt::ApplicationShortcut确实有效,但是,正如引用文章的评论所指出的,这可能有缺点。不过,它们对我的这个特殊应用并不重要,所以我将发布并接受这个答案

纠错码的示例:

//In the constructor of the main window, after creation of the action and 
//setting of the shortcut
gameQuit->setShortcutContext(Qt::ApplicationShortcut);

我从引用的帖子的评论中得到了一些建议(这些评论遭到了指责,这就是我最初没有尝试的原因),我使用[actionobject]->setShortcutContext()修改了快捷方式上下文。显然,默认设置在我的场景中不起作用

我首先尝试设置为Qt::WindowShortcut,但没有成功。Qt::ApplicationShortcut确实有效,但是,正如引用文章的评论所指出的,这可能有缺点。不过,它们对我的这个特殊应用并不重要,所以我将发布并接受这个答案

纠错码的示例:

//In the constructor of the main window, after creation of the action and 
//setting of the shortcut
gameQuit->setShortcutContext(Qt::ApplicationShortcut);

为什么会被否决?我猜这是因为你没有提供一个最小的例子。关于StackOverflow,大多数问题都需要一个小的代码示例来说明问题,其他人可以尝试。@drescherjm-Hmm。。。在prepost指南中没有看到这一点。以后我会记住的。谢谢。为什么投票被否决了?我猜这是因为你没有提供一个最小的例子。关于StackOverflow,大多数问题都需要一个小的代码示例来说明问题,其他人可以尝试。@drescherjm-Hmm。。。在prepost指南中没有看到这一点。以后我会记住的。谢谢