Qt菜单快捷键抢先子小部件按键事件

2024-05-07 01:58:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个主窗口,在这个主窗口中,我建立了标准的“编辑”>;“剪切/复制/粘贴”操作,菜单操作链接到主窗口的子窗口QTextEdit的相关插槽。在

主窗口有一个不同的子窗口(在拆分器的另一侧),它显示一个TableView。这个小部件有点击聚焦的焦点策略和一个KeyPressEvent处理程序。当这个子对象有焦点时,它的KeyPressEvent方法会截获除ctl-c、ctl-v和分配给“编辑”或“文件”菜单操作的任何其他键序列之外的所有击键事件(我知道,因为它将它们打印在控制台上)。这些按键进入菜单,并在没有焦点的QTextEdit中生效。在

我希望能够在表视图中捕获^c以复制表选择的值,但键序列永远无法到达。在

如何使^c操作对具有焦点的小部件可见?在


Tags: gt编辑标准链接粘贴部件菜单序列
1条回答
网友
1楼 · 发布于 2024-05-07 01:58:48

创建编辑操作时,为它们提供一个WidgetShortcut上下文和add them给它们要关联的小部件:

copyAction.setShortcutContext(Qt.WidgetShortcut)
editor.addAction(copyAction)

请注意,以这种方式配置的操作的快捷方式不会覆盖关联小部件可能具有的任何内置快捷方式。在

编辑

下面是一个简单的演示。请注意,当文本编辑具有键盘焦点时,“Ctrl+P”将触发处理程序,而“Ctrl+C”则不会,因为它是一个内置的快捷方式。当表格具有键盘焦点时,“Ctrl+C”将正常复制所选项目,但“Ctrl+P”将不执行任何操作。在

^{pr2}$

相关问题 更多 >