QTextEdit接收控制密钥未传递到主窗口

时间:2014-03-27 20:33:11

标签: c++ qt user-interface

我的QMainWindow上有一个QTextEdit。我已经覆盖了我的主窗口keyPressEvent方法,并在那里放了几个热键处理程序(即:Ctrl + J,Ctrl + K)。这些热键是应用程序的全局。

我遇到的问题是,当QTextEdit小部件具有焦点时,这些按键似乎被小部件消耗,并且从未被表单看到。有趣的是,这些关键组合在QTextEdit中什么都不做。

如何让QTextEdit忽略没有关联行为的组合键?或者,我如何在Qt中实现我的目标?

1 个答案:

答案 0 :(得分:1)

具有键盘焦点的小部件将名义上消耗所有键盘事件。没有"未处理的"键盘事件。 Qt的键盘事件的事件语义不会那样工作。

您需要使用QShortcut。在内部,它充当应用程序范围的击键序列事件过滤器,它与QApplication的私有实现相关联。您执行此操作的唯一方法是充当应用程序范围的事件过滤器,作用于击键事件。