Python 粘贴到QTableView的字段中

Python 粘贴到QTableView的字段中,python,qt,pyqt,paste,qtableview,Python,Qt,Pyqt,Paste,Qtableview,我需要在python中实现一个函数,在按下“ctrl+v”时处理“粘贴”。我有一个QTableView,我需要复制表的一个字段并将其粘贴到表的另一个字段。我尝试了以下代码,但问题是我不知道如何在tableView中读取复制的项目(从剪贴板)。(因为它已经复制了字段,我可以将其粘贴到其他任何地方,就像一个记事本一样)。以下是我尝试过的部分代码: class Widget(QWidget): def __init__(self,md,parent=None): QWidget.__init__(

我需要在python中实现一个函数,在按下“ctrl+v”时处理“粘贴”。我有一个
QTableView
,我需要复制表的一个字段并将其粘贴到表的另一个字段。我尝试了以下代码,但问题是我不知道如何在tableView中读取复制的项目(从剪贴板)。(因为它已经复制了字段,我可以将其粘贴到其他任何地方,就像一个记事本一样)。以下是我尝试过的部分代码:

class Widget(QWidget):
def __init__(self,md,parent=None):
  QWidget.__init__(self,parent)
   # initially construct the visible table
  self.tv=QTableView()
  self.tv.show()

  # set the shortcut ctrl+v for paste
  QShortcut(QKeySequence('Ctrl+v'),self).activated.connect(self._handlePaste)

  self.layout = QVBoxLayout(self)
  self.layout.addWidget(self.tv)

# paste the value  
def _handlePaste(self):
    if self.tv.copiedItem.isEmpty():
        return
    stream = QDataStream(self.tv.copiedItem, QIODevice.ReadOnly)
    self.tv.readItemFromStream(stream, self.pasteOffset)

您可以使用
QApplication.clipboard()
从应用程序的
QApplication
实例获取剪贴板,并从返回的
QClipboard
对象获取文本、图像、mime数据等。以下是一个示例:

import PyQt4.QtGui as gui

class Widget(gui.QWidget):
    def __init__(self,parent=None):
        gui.QWidget.__init__(self,parent)
        # initially construct the visible table
        self.tv=gui.QTableWidget()
        self.tv.setRowCount(1)
        self.tv.setColumnCount(1)
        self.tv.show()

        # set the shortcut ctrl+v for paste
        gui.QShortcut(gui.QKeySequence('Ctrl+v'),self).activated.connect(self._handlePaste)

        self.layout = gui.QVBoxLayout(self)
        self.layout.addWidget(self.tv)



    # paste the value  
    def _handlePaste(self):
        clipboard_text = gui.QApplication.instance().clipboard().text()
        item = gui.QTableWidgetItem()
        item.setText(clipboard_text)
        self.tv.setItem(0, 0, item)
        print clipboard_text



app = gui.QApplication([])

w = Widget()
w.show()

app.exec_()

注意:我使用了一个
QTableWidget
,因为我没有用于
QTableView
的模型,但是您可以根据需要调整示例。

AttributeError:'QTableView'对象没有属性'setItem'。您阅读了最后的说明了吗?我使用了
QTableWidget
而不是
QTableView
也检查代码;)@(有些人忘记接受答案;)在任何情况下,你都可以直接问OP。。。也许他/她还有另一个原因:D