2

在 Pyside 程序中,我想在我的 tableWidget 中使用 Ctrl+C 进行复制。

我在 QtDesigner 中添加了一个快捷方式,但它不起作用。

在 mainGui.py

self.actionCopy.setShortcut(QtGui.QApplication.translate("mainDialog", "Ctrl+C", None, QtGui.QApplication.UnicodeUTF8))

我发现密钥被覆盖的 keyPressEvent 捕获(最初仅用于 Escape)。它可以捕获单个“Key_Control”,但不能捕获 Ctrl+C。下面是我的代码:

def keyPressEvent(self, event):
    # Re-direct ESC key to closeEvent
    print(event)
    if event.key() == Qt.Key_Escape:
        self.close()
    elif event.key() == QKeySequence.Copy:
        self.actionCopy.trigger()

我该怎么做才能让它捕获 Ctrl+C 或让它传递给 QtDesigner 的快捷方式

4

2 回答 2

3

此代码将可读

if QKeySequence(event.key()+int(event.modifiers())) == QKeySequence("Ctrl+C"):
    self.actionCopy.trigger()
于 2017-04-15T02:59:40.693 回答
2

您不必重写 keyPressEvent。您开始使用快捷方式很好,但我需要更多代码来告诉您哪里出错了。工作流程应该是:

  1. 从 Ctrl+C 创建一个动作

  2. 将该操作与您的主要小部件的功能连接起来

  3. 在与 Ctrl+C 连接的主小部件的功能中,您可以收集所需的所有信息并将它们放在剪贴板中。

但是,正如我所说,我需要更多代码才能检测到问题。

更新

在代码中的第 68 行之后,添加以下行:

self.tableWidget.addAction(self.actionCopy)

您必须将操作添加到tableWidget也,而不仅仅是主窗口。

于 2013-08-19T08:04:14.373 回答