我的QMainWindow上有一个QTextEdit。我已经覆盖了我的主窗口keyPressEvent方法,并在那里放了几个热键处理程序(即:Ctrl + J,Ctrl + K)。这些热键是应用程序的全局。
我遇到的问题是,当QTextEdit小部件具有焦点时,这些按键似乎被小部件消耗,并且从未被表单看到。有趣的是,这些关键组合在QTextEdit中什么都不做。
如何让QTextEdit忽略没有关联行为的组合键?或者,我如何在Qt中实现我的目标?
答案 0 :(得分:1)
具有键盘焦点的小部件将名义上消耗所有键盘事件。没有"未处理的"键盘事件。 Qt的键盘事件的事件语义不会那样工作。
您需要使用QShortcut
。在内部,它充当应用程序范围的击键序列事件过滤器,它与QApplication
的私有实现相关联。您执行此操作的唯一方法是充当应用程序范围的事件过滤器,作用于击键事件。