我需要在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数据等。下面是一个示例:注意:我使用了
QTableWidget
,因为我没有一个模型可以与QTableView
一起使用,但是您可以根据您的需要调整示例。在相关问题 更多 >
编程相关推荐