菜单打开时,菜单中的C QT操作不会由键盘快捷键触发



我正在Linux上构建QT应用程序。我的主窗口中有一个菜单栏,其中有两个菜单,每个菜单都有多个操作,所有操作都有与之相关的键盘快捷键。当菜单不打开时,键盘快捷键可以工作,但是当菜单开放时,它们都无法正常工作。

在使用[菜单对象] -> addaction添加到各自菜单中的操作之前,将使用SetShortCut添加快捷方式。所有动作都有主窗口作为父母。阅读QACTION快捷方式并不总是可行的,我添加了AddAction的调用,将操作添加到主窗口中。这没有纠正问题。

菜单项之一的代码示例:

//In the main window constructor
gameQuit = new QAction(QString(tr("&QuittCtrl+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编写的,菜单项的键盘快捷键在菜单打开时确实有效,所以我认为必须有一种方法。

感谢您的任何帮助。

从引用的帖子的评论中获取一些建议(这是我最初没有尝试的原因),我使用[action opobject] ->>>>setShortCutContext()。显然,默认值在我的情况下不起作用。

我首先尝试设置为qt :: WindowsShortCut,但无效。qt :: applicationshortcut确实有效,但是,这可能存在引用帖子的评论中所述的缺点。它们对我的这种特殊应用并不重要,所以我要发布并接受它作为答案。

校正代码的示例:

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

最新更新