2016-12-11 50 views
1

我正在Linux上構建Qt應用程序。我在主窗口中有一個菜單欄,裏面有兩個菜單,每個菜單都有幾個動作,所有動作都有鍵盤快捷鍵與它們相關聯。鍵盤快捷方式在菜單未打開時工作,但當其中一個菜單打開時,它們都不起作用。C++ Qt菜單中沒有通過鍵盤快捷鍵觸發的菜單中的操作

使用[menuobject] - > addAction將操作添加到它們各自的菜單之前,將快捷方式添加到setShortcut的操作中。所有操作都以主窗口爲父窗口。在閱讀QAction shortcut doesnt always work之後,我添加了對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編寫,對於菜單項的快捷鍵時,菜單是開放做的工作,所以我認爲一定有辦法。

感謝您的任何幫助。

+0

爲什麼這個downvoted? – rsood

+0

我的猜測是這是因爲你沒有提供一個簡單的例子。在StackOverflow上,大多數問題需要一個小代碼示例來顯示問題,其他人可以嘗試。 – drescherjm

+0

@drescherjm嗯......沒有看到在前置指南。我將銘記未來。謝謝。 – rsood

回答

0

從引用的帖子的評論(已被斥責,這就是爲什麼我最初沒有嘗試它)的意見中,我使用[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);