检测 Ctrl+S 离子 QTextedit?

Detect Ctrl+S ion QTextedit?

所以,我正在制作一个用于编辑文本文件的 QTextEdit。我用按钮加载和保存工作正常。但是我养成了每次在文本编辑器中粘贴内容时按 Ctrl+S 保存的习惯,因为我以前在记事本中使用过。所以我一直在努力实现它。但我无法全神贯注于如何检测和执行我的保存功能。让我们称之为 savetext.

我一直在努力让 keyPressEvent 工作,但我就是不明白它是如何工作的。所以我一直很无助地尝试学习它。

我大大简化的代码如下所示:

class GUI(QProcess):
    def init etc...
        "Button creations and connect to save/load function"
        self.textedit=QTextEdit()

    def savetext(self):
        code

    def loadtext(self):
        code

现在,我如何检测在 QTextEdit 中或我的程序中任何地方检测到的组合键,并使其执行 savetext?在我的例子中,Ctrl+S,虽然我只是喜欢一般的解释,所以我可以将它应用到任何组合。

您或许可以使用 QShortcut,现在它只会在文本编辑处于焦点时激活。如果您想更改行为,请查看 here

这是一个例子

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        layout = QtGui.QVBoxLayout(self)
        self.edit = QtGui.QTextEdit()
        layout.addWidget(self.edit)
        self.button = QtGui.QPushButton('Test')
        layout.addWidget(self.button)
        foo = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+S"), self.edit, self.saveCall, context=QtCore.Qt.WidgetShortcut)

    def saveCall(self):
        self.edit.append('Please save me')

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    win = Window()
    win.show()
    sys.exit(app.exec_())

使用QShortcutQKeySequence

from PyQt5.QtWidgets import QApplication, QTextEdit, QShortcut
from PyQt5.QtGui import QKeySequence
import sys

def slot():
    print("Ctrl+S")


app = QApplication(sys.argv)
textedit=QTextEdit()
shortcut = QShortcut(QKeySequence("Ctrl+S"), textedit)
shortcut.activated.connect(slot)

textedit.show()
sys.exit(app.exec_())