如何为2个对象创建“Ctrl + C”绑定:self.table,self.editor
我有:
shortcut = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+C"), self.table, None, self.copyTable)
shortcut2 = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+C"), self.editor, None, self.copyText)
这有效,但是被玷污了。如果我专注于self.editor并且我第一次按下“Ctrl + C它会执行self.copyTable,第二次是self.copyText。
我做错了什么? :P
我确实找到了一种解决方法,我在其中创建了一个QAction,用于检查哪个对象具有焦点并触发所需的操作。但我宁愿每个对象都有它。
编辑(一个工作示例):
shortcut = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+C"), self, self.copytoclipbord)
shortcut.setContext(QtCore.Qt.WidgetShortcut)
答案 0 :(得分:3)
您必须为快捷方式设置正确的上下文:默认情况下,它们是窗口 - “全局”,您可能希望它们是小部件 - “本地”。请参阅setShortcutContext。
答案 1 :(得分:3)
我已经在这里做过,它工作得很好^ _ ^。非常简单的想法。
只需制作一个快捷方式和一个插槽。
QtGui.QShortcut(QtGui.QKeySequence("Ctrl+C"), self, None, self.copyFunction)
并在copyFunction里面检查焦点,如下所示:
def copyFunction(self):
if self.table.hasFocus:
self.copyTable()
elif self.editor.hasFocus:
self.copyEditor()