如何使用QTableView获取复制粘贴数据

时间:2017-08-25 19:29:18

标签: python qt pyqt qt5 pyqt5

用户希望在外部文本编辑器中复制文本,并使用Mac上的QTableView或“Control + v”热键将其粘贴到Command + v

我已经实现了跟踪每个用户键盘操作的keyPressEvent。但是如何从剪贴板中获取pated数据?

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *


class View(QTableView):
    def __init__(self):
        super(View, self).__init__(parent=None)

    def keyPressEvent(self, event):
        if event.matches(QKeySequence.Copy):
            print 'Ctrl + C'
        if event.matches(QKeySequence.Paste):
            print 'Ctrl + V'
        QTableView.keyPressEvent(self, event)


app = QApplication([])
view = View()
view.show()
qApp.exec_()

enter image description here

1 个答案:

答案 0 :(得分:3)

您必须使用班级QClipboard的对象,在这种情况下,我们通过QApplication获取该对象,以获取我们使用的文字QClipboard::text()并粘贴我们使用的文字{{ 3}}

在你的情况下:

def keyPressEvent(self, event):
    clipboard = QApplication.clipboard()
    if event.matches(QKeySequence.Copy):
        print('Ctrl + C')
        clipboard.setText("some text")
    if event.matches(QKeySequence.Paste):
        print(clipboard.text())
        print('Ctrl + V')
    QTableView.keyPressEvent(self, event)