PYQT4 中的捕获键

Capture Keys in PYQT4

我正在尝试捕获程序中按下的所有键

def keyPressEvent(self, event):

    event = event.key()

    if (event == QtCore.Qt.Key_Q):
        print ('Q!.')

当我试图在我的 window 中捕获按键时,该功能工作正常。 (在这种情况下 Q_Key)

但是如果在文本小部件(例如:QListView、QlistWidget、QLineEdit 等等)中按下该键,则它不起作用。该函数不打印任何内容。我做错了什么...... 我该怎么做才能解决它?

谢谢,对不起我的英语!

您需要在应用程序上安装事件过滤器以获取所有按键事件:

class Window(QtGui.QWidget):
    def __init__(self):
        ...
        QtGui.qApp.installEventFilter(self)

    def eventFilter(self, source, event):
        if event.type() == QtCore.QEvent.KeyPress:
            print('KeyPress: %s [%r]' % (event.key(), source))
        return super(Window, self).eventFilter(source, event)