当前位置: 首页 > news >正文

Qt QTableWidget多行多列复制粘贴

Qt QTableWidget多行多列复制粘贴

#include <QApplication>
#include <QClipboard>
#include <QTableWidget>// 复制选中区域到剪贴板
void copyTableSelection(QTableWidget *table) {QItemSelectionModel *selection = table->selectionModel();QModelIndexList indexes = selection->selectedIndexes();if(indexes.isEmpty()) return;// 获取选中区域的行列范围int minRow = indexes.first().row();int maxRow = indexes.first().row();int minCol = indexes.first().column();int maxCol = indexes.first().column();foreach(QModelIndex index, indexes) {minRow = qMin(minRow, index.row());maxRow = qMax(maxRow, index.row());minCol = qMin(minCol, index.column());maxCol = qMax(maxCol, index.column());}// 构建文本数据QString clipboardText;for(int row = minRow; row <= maxRow; ++row) {for(int col = minCol; col <= maxCol; ++col) {QTableWidgetItem *item = table->item(row, col);if(item) clipboardText += item->text();if(col != maxCol) clipboardText += "\t";}if(row != maxRow) clipboardText += "\n";}QApplication::clipboard()->setText(clipboardText);
}// 从剪贴板粘贴到表格
void pasteToTable(QTableWidget *table) {QString clipboardText = QApplication::clipboard()->text();if(clipboardText.isEmpty()) return;int startRow = table->currentRow();int startCol = table->currentColumn();if(startRow < 0) startRow = 0;if(startCol < 0) startCol = 0;QStringList rows = clipboardText.split('\n');for(int row = 0; row < rows.size(); ++row) {QStringList cols = rows[row].split('\t');for(int col = 0; col < cols.size(); ++col) {int targetRow = startRow + row;int targetCol = startCol + col;if(targetRow >= table->rowCount()) table->insertRow(table->rowCount());if(targetCol >= table->columnCount())table->insertColumn(table->columnCount());QTableWidgetItem *item = table->item(targetRow, targetCol);if(!item) {item = new QTableWidgetItem();table->setItem(targetRow, targetCol, item);}item->setText(cols[col]);}}
}
http://www.dtcms.com/a/263801.html

相关文章:

  • Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议
  • 安全左移(Shift Left Security):软件安全的演进之路
  • Spring Boot 2 多模块项目中配置文件的加载顺序
  • 智能交通信号灯
  • Django打造智能Web机器人控制平台
  • HarmonyOS应用开发高级认证知识点梳理 (三)状态管理V2装饰器核心规则
  • android车载开发之HVAC
  • 笔记本电脑怎样投屏到客厅的大电视?怎样避免将电脑全部画面都投出去?
  • 【蓝牙】Linux Qt4查看已经配对的蓝牙信息
  • 05【C++ 入门基础】内联、auto、指针空值
  • 算法-每日一题(DAY12)最长和谐子序列
  • 为Mkdocs网站添加Google广告
  • CRMEB开源商城系统Windows+IIS环境安装配置详解
  • word中一行未满但是后面有空白行
  • 每日一练:找到初始输入字符串 I
  • AbMole| H₂DCFDA(M9096;活性氧(ROS)探针)
  • MySQL索引深度解析:B+树、B树、哈希索引怎么选?
  • 凸包进阶旋转卡壳(模板题目集)
  • Window 2000 Perfectional_配置和管理FTP
  • uniapp内置蓝牙打印
  • Qt小组件 - 1(手风琴)
  • 计算机网络:【socket】【UDP】【地址转换函数】【TCP】
  • 测试第六讲-测试模型分类
  • CloudBase AI ToolKit实战:从0到1开发一个智能医疗网站
  • 时空数据挖掘五大革新方向详解篇!
  • 电机控制——电机位置传感器零位标定
  • 安防监控视频汇聚平台EasyCVR v3.7.2版云端录像无法在web端播放的原因排查和解决方法
  • springboot3.2/3.4+rocketmq5.3.3测试程序的基本例子
  • SSVEP Next:现代化的 SSVEP 可视化 Web 快速实现
  • CAU数据挖掘实验 表分析数据插件