为了更快速的将QTableWidget的内容复制到剪贴板,只需重写这个控件的keyPressEvent(event)
废话不多说,直接上代码:
复制功能
def keyPressEvent(self, event):
""" Ctrl + C复制表格内容 """
if event.modifiers() == Qt.ControlModifier and event.key() == Qt.Key_C:
# 获取表格的选中行
selected_ranges = self.show_table.selectedRanges()[0] # 只取第一个数据块,其他的如果需要要做遍历,简单功能就不写得那么复杂了
text_str = "" # 最后总的内容
# 行(选中的行信息读取)
for row in range(selected_ranges.topRow(), selected_ranges.bottomRow() + 1):
row_str = ""
# 列(选中的列信息读取)
for col in range(selected_ranges.leftColumn(), selected_ranges.rightColumn() + 1):
item = self.show_table.item(row, col)
row_str += item.text() + '\t' # 制表符间隔数据
text_str += row_str + '\n' # 换行
clipboard = qApp.clipboard() # 获取剪贴板
clipboard.setText(text_str) # 内容写入剪贴板
这样就可以将结果复制到excel中进行粘贴了。
粘贴功能
依葫芦画瓢吧。在新的表格控件中,遍历剪贴板的内容,换行时插入新的一行,列就插入一列。问题应该不大,暂无需求,我未做实现。