【问题标题】:How to pass along menu shortcuts from child widget holding focus in PyQt4?如何从在 PyQt4 中保持焦点的子小部件传递菜单快捷方式?
【发布时间】:2012-10-26 21:51:34
【问题描述】:
我有一个带有菜单栏的QMainWindow,包括使用常用快捷键保存、打开和退出的菜单项。它创建了一个 QTableWidget,其中列出了用户可以选择的一系列不同类别(由他选择)。
如果用户点击QTableWidget 更改类别,小部件将获得焦点。这主要是我想要的,但不幸的是它也似乎窃取了菜单快捷方式,因此按 Ctrl+S 不再触发保存。
我尝试使用keyPressEvent 来解决这个问题,但即使我确实让它工作了,它似乎也有点过头了。没有办法将所有控制/菜单键委托回 QMainWindow 吗?
【问题讨论】:
标签:
python
qt4
pyqt4
qt4.8
【解决方案1】:
您创建QMenuBar 的方式一定有问题。这是一个对我来说很好的例子。无论焦点在表格中,保存都会继续运行:
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.resize(640,480)
menuBar = self.menuBar()
menu = menuBar.addMenu("&File")
action = menu.addAction("&Save", self.doAction)
action.setShortcuts(QtGui.QKeySequence.Save)
self.view = QtGui.QTableWidget(5,5)
self.setCentralWidget(self.view)
def doAction(self):
print "Save"