Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QTextEdit接收控制键不';不要通过主窗口_C++_Qt_User Interface - Fatal编程技术网

C++ QTextEdit接收控制键不';不要通过主窗口

C++ QTextEdit接收控制键不';不要通过主窗口,c++,qt,user-interface,C++,Qt,User Interface,我的qMain窗口上有一个QTextEdit。我已经重写了我的主窗口keyPressEvent方法,并在其中放置了几个热键处理程序(即:Ctrl+J、Ctrl+K)。这些热键是应用程序的全局热键 我遇到的问题是,当QTextEdit小部件具有焦点时,这些按键似乎被小部件使用,而表单从未看到过。有趣的是,这些键组合在QTextEdit中不起任何作用 如何让QTextEdit忽略与之没有行为关联的组合键?或者,我如何在Qt中实现我的目标?任何具有键盘焦点的小部件名义上都会消耗所有键盘事件。没有“未处

我的qMain窗口上有一个QTextEdit。我已经重写了我的主窗口keyPressEvent方法,并在其中放置了几个热键处理程序(即:Ctrl+J、Ctrl+K)。这些热键是应用程序的全局热键

我遇到的问题是,当QTextEdit小部件具有焦点时,这些按键似乎被小部件使用,而表单从未看到过。有趣的是,这些键组合在QTextEdit中不起任何作用


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

任何具有键盘焦点的小部件名义上都会消耗所有键盘事件。没有“未处理”键盘事件的概念。Qt键盘事件的事件语义不是这样工作的


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

您可以将按键从QTextEdit转发到QMainWindow吗?如果QMainWindow是唯一需要对Ctrl+J、Ctrl+K做出反应的人,那么我看不出这个解决方案中有任何可能的混淆。