QTableWidget实现复制粘贴
目录
1 实现功能
(1)选择一个单元格复制,可进行多个单元格粘贴
(2)选择多个单元格复制,可进行同样多单元格粘贴,行列均可
2 代码
void TableWidgetClass::keyPressEvent(QKeyEvent *event) {
if (event->modifiers() == Qt::ControlModifier && event->key() == Qt::Key_C) {
// 实现复制逻辑
QTableWidgetItem *item;
//QMimeData *mimeData = new QMimeData;
QString list;
for (int i = 0; i < selectedItems().count(); ++i) {
item = selectedItems().at(i);
if(item->text().isEmpty())
list += " ";
else
list += item->text();
list += "\n";
}
//mimeData->setText(list);
m_Clipboard->setText(list);
QString list1 = m_Clipboard->text();
list1.trimmed();
}
else if (event->modifiers() == Qt::ControlModifier && event->key() == Qt::Key_V) {
// 实现粘贴逻辑
QString mimeData = m_Clipboard->text();
if (!mimeData.isEmpty()) {
QStringList list = mimeData.split("\n");
list.removeLast();
if(list.count() > 1){
if(list.count() == selectedItems().count()){
for (int i = 0; i < selectedItems().count(); ++i) {
QTableWidgetItem *item = selectedItems().at(i);
QString text = list.at(i);
item->setText(text);
}
}
}
else if(list.count() == 1){
for (int i = 0; i < selectedItems().count(); ++i) {
QTableWidgetItem *item = selectedItems().at(i);
QString text = list.at(0);
item->setText(text);
}
}
}
}
else
QTableWidget::keyPressEvent(event);
}
该类继承了QTableWidget,代码较为简单。