概述

粘贴板表格内容格式:
列与列之间内容以制表符分隔("\t")
行与行之间内容以换行符分隔("\n")

粘贴:
获取粘贴板内容,把内容分解成单个item的值并放到表格中
通过QApplication::clipboard()->text()类获取粘贴板的内容

复制:
获取选中item,把选中item内容组织一下并放到粘贴板
通过QApplication::clipboard()->setText()设置粘贴板内容

实现代码

bool MyTestTable:event(QEvent *event)
{if (event->type() == QEvent::KeyPress){QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);if (keyEvent->matches(QKeySequence::Paste)){QString text_to_past = QApplication::clipboard()->text();QStringList table_row_data_list = text_to_past.split("\n", QString::SkipEmptyParts);QModelIndex current_index = this->currentIndex();for (int i = 0; i < this->rowCount() - current_index.row() && i < table_row_data_list.length(); ++i){QStringList row_data_list = table_row_data_list.at(i).split("\t");for(int k = 0; k < this->columnCount() - current_index.column() && k<row_data_list.length(); k++){this->item(i+current_index.row(), k+current_index.column())->setText(row_data_list.at(k));}}event->accept();return true;}else if(keyEvent->matches(QKeySequence::Copy)){QString copied_text;QModelIndexList current_selected_indexs = this->selectedIndexes();int current_row = current_selected_indexs.at(0).row();for(int i = 0; i < current_selected_indexs.count(); i++){if(current_row != current_selected_indexs.at(i).row()){current_row = current_selected_indexs.at(i).row();copied_text.append("\n");copied_text.append(current_selected_indexs.at(i).data().toString());continue;}if(0 != i){copied_text.append("\t");}copied_text.append(current_selected_indexs.at(i).data().toString());}copied_text.append("\n");QApplication::clipboard()->setText(copied_text);event->accept();return true;}}return QTableView::event(event);
}

QTableWidget, QTableView实现粘贴复制相关推荐

  1. 苹果系统下如何粘贴复制?

    刚接触苹果电脑,感觉有些奇妙.耶,粘贴复制都不会耶. 后来从网上查到资料 command+A 选中 command+Z  撤销 command+X 剪切 command+C 复制 command+V ...

  2. Excel:python结合Excel使用技巧经验总结之(将python输出的等间隔列数据直接粘贴复制存到物理表格内等)图文教程之详细攻略

    Excel:python结合Excel使用技巧经验总结之(将python输出的等间隔列数据直接粘贴复制存到物理表格内等)图文教程之详细攻略 目录 Excel使用技巧经验总结 将pandas.DataF ...

  3. 粘贴复制Android复制和粘贴的实现

    最近研究粘贴复制,稍微总结一下,以后继续补充: main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.co ...

  4. h5禁止页面长按操作_HTML5 对于手机页面长按会粘贴复制的禁用 (解决方案)

    解决方案: 直接在CSS 文件中添加下面的代码,就可以实现了在手机端禁止粘贴复制的功能: *{ -webkit-touch-callout:none;  /*系统默认菜单被禁用*/ -webkit-u ...

  5. windows远程桌面无法粘贴复制的问题解决方法

    windows远程桌面无法粘贴复制的问题解决方法 参考文章: (1)windows远程桌面无法粘贴复制的问题解决方法 (2)https://www.cnblogs.com/fogwang/p/6093 ...

  6. adb命令之:手机与电脑文件之间的粘贴复制

     Android开发测试中时常需要用到adb来进行手机端(真机/模拟器)与电脑端文件的粘贴复制,使用adb命令可以很方便的实现这种需求. 1.手机端-->>电脑端 adb pull 手 ...

  7. 主机与虚拟机之间无法粘贴复制

    当你在Vmware中安装Ubuntu虚拟机时,可能会出现无法粘贴复制,那么你可以根据以下步骤来进行操作: sudo apt-get autoremove open-vm-tools sudo apt- ...

  8. 详谈QTableWidget / QTableView

    使用QTableWidget / QTableView的一些总结 QTableWidget QTableView 初次编辑博客,可能知识有点欠缺,欢迎大家指教 下一篇介绍两种表格的导入与导出为Exce ...

  9. 小技巧 | 关于问卷星如何粘贴复制

    目的: 一分钟掌握问卷星如何复制粘贴 学习内容: 有手就行 学习时间: 一分钟 步骤: 1.打开问卷星页面 2.按F12出现页面 3.按F1出现页面 4.下翻找到"调动程序"或者& ...

最新文章

  1. java中如何应对读改写场景
  2. 深入了解Intel保护模式
  3. monty python-Monty Python
  4. BUU_刷题之旅(One)
  5. 关于WebService中用到的QName详解
  6. VS2005混合编译ARM汇编代码
  7. 如何在iPhone或iPad的控制中心中控制智能家居设备
  8. [剑指offer][JAVA]面试题第[22]题[j剑指offer][双指针][快慢指针]
  9. python安装界面翻译_Python新手教程:40行python代码写一个桌面翻译器
  10. 原来数据库里的单引号是这么加进去的
  11. java option_option 的经典属性
  12. 七十三、分发系统介绍、expect脚本远程登录、expect脚本远程执行命令、expect传递参数...
  13. 通达OA与触点通RTC的集成插件
  14. win7科学计算机的用法,win7系统自带的计算器使用的修复步骤
  15. Detach Procedure
  16. __wakeup绕过版本_PHP__wakeup()方法
  17. spring-test部分翻译
  18. Qt之QGraphicsView入门篇
  19. 猿人学web端爬虫攻防大赛赛题解析_第九题:js混淆-动态cookie2
  20. 公里与英里的换算c语言函数_80迈=80迈=80公里?过年了许多开车回家的老司机都未必清楚!...

热门文章

  1. 不想多挣钱的程序员都有罪!!!
  2. 走出舒适圈,你才能看到更广袤的世界
  3. Sentinel核心源码解析
  4. OpenGL实现3D自由变形
  5. 【我的新学期】学习季
  6. 【Linux学习笔记(十八)】之 压缩,打包 zip,gz, bz2, tar,tar.gz, tar.bz2
  7. 用php制作微信小程序,微信小程序 自己制作小组件
  8. chrome浏览器设置cookie失效
  9. JRebel热部署,从此告别一遍一遍重启项目
  10. AWK程序设计语言-翻译