我有一个QTextEdit在我的QMainWindow。我已经覆盖了我的主窗口keyPressEvent方法,并在那里放了一些热键处理程序(即:Ctrl+J, Ctrl+K)。这些热键对于应用程序是全局的。
我遇到的问题是,当QTextEdit小部件有焦点时,这些按键似乎被小部件消耗,窗体从未看到。有趣的是,这些键组合在QTextEdit中没有任何作用。
我怎么能有QTextEdit忽略键组合,它没有相关的行为?或者,我如何在Qt中完成我的目标?
具有键盘焦点的小部件名义上将消耗所有键盘事件。没有"未处理"键盘事件的概念。Qt的键盘事件语义不是这样工作的。
您需要使用QShortcut
。在内部,它充当击键序列的应用程序范围的事件过滤器,它被绑定到QApplication
的私有实现中。唯一的另一种方法是充当应用程序范围的事件过滤器,对击键事件起作用。