【Qt】QTableWidget设置可以选择多行多列,并能复制选择的内容到剪贴板

比如有一个 QTableWidget*m_tbwQuery

m_tbwQuery->installEventFilter(this); //进行事件过滤处理//设置可以选择多行多列
m_tbwQuery->setSelectionMode(QAbstractItemView::MultiSelection); 
m_tbwQuery->setSelectionBehavior(QAbstractItemView::SelectItems); 
m_tbwQuery->setFocusPolicy(Qt::StrongFocus);  // 或者 Qt::ClickFocus 或 Qt::TabFocus//点击后,取消原来选择的
connect(m_tbwQuery, &QTableWidget::itemPressed, [=](QTableWidgetItem* item){if (item) {m_tbwQuery->clearSelection();m_tbwQuery->setSelectionMode(QAbstractItemView::MultiSelection);m_tbwQuery->setCurrentItem(item);item->setSelected(true);}});// 双击选择一行
connect(m_tbwQuery, &QTableWidget::itemDoubleClicked, [=](QTableWidgetItem* item) {if (item) {m_tbwQuery->clearSelection();m_tbwQuery->setSelectionMode(QAbstractItemView::MultiSelection);m_tbwQuery->selectRow(item->row());}});

在事件过滤中处理键盘事件,快捷键是Ctrl+C

/// 事件过滤
bool QueryDataTable::eventFilter(QObject* obj, QEvent* event) 
{if (obj == m_tbwQuery){if (event->type() == QEvent::KeyPress) {QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);if (keyEvent->matches(QKeySequence::Copy)) {copySelectedCellsToClipboard();return true;  // Event handled}}}return QObject::eventFilter(obj, event);
}

最后是实现复制到剪贴板的函数

// 复制选定单元格内容到剪贴板的函数
void QueryDataTable::copySelectedCellsToClipboard() 
{QItemSelectionModel* selectionModel = m_tbwQuery->selectionModel();QModelIndexList indexes = selectionModel->selectedIndexes();if (!indexes.isEmpty()) {qSort(indexes); // 为了确保数据按照视觉顺序排序QString text;QModelIndex previous = indexes.first();QModelIndex current;foreach(const QModelIndex & index, indexes) {if (index != previous) {if (index.row() != previous.row()) {text += '\n';}else {text += '\t';}}text += index.data(Qt::DisplayRole).toString();previous = index;}QApplication::clipboard()->setText(text);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/40357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析

在自然语言处理领域&#xff0c;人们经常需要比较字符串&#xff0c;这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似&#xff0c;或者相似度是好还是差。这类似于我们使用手机打错一个词&#xff0c;但手机会建议正确的词来修正它&#…

如何为老化的汽车铅酸电池充电

一项小研究表明&#xff0c;汽车铅酸电池不同于深循环或固定电池。汽车电池旨在限度地提高启动电流容量&#xff0c;并且对深度放电或浮充(也称为第 3 阶段充电循环)反应不佳。起动电池的极板结构使表面积化&#xff0c;并且电解液比重 (SG) 高于其他电池&#xff0c;以提供高启…

C# 实现位比较操作

1、目标 对两个字节进行比较&#xff0c;统计变化位数、一位发生变化的位数、二位发生变化的位数、多位发生变化的位数。 2、代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Lin…

php 跨域问题

设置header <?php $origin isset($_SERVER[HTTP_ORIGIN])? $_SERVER[HTTP_ORIGIN]:;$allow_originarray(http://www.aaa.com,http://www.bbb.com, ); if( $origin in $allow_origin ){header("Access-Control-Allow-Origin:".$origin);header("Access-Co…

Electron Forge 打包更改打包后图片

确认 ICO 文件有效 确保 icon.ico 文件是有效的并且包含多种分辨率的图标&#xff08;如 16x16, 32x32, 48x48, 256x256&#xff09;。可以使用工具如 icoconverter 来生成有效的 ICO 文件。 https://icoconvert.com/确认图标文件路径 确保图标文件路径正确并且文件存在。 确…

O2OA(翱途) 开发平台之HTTP端口规划

O2OA(翱途) 开发平台[下称O2OA开发平台或者O2OA]采用相对灵活的系统架构&#xff0c;支持三种服务器运行的方式。本篇主要阐述合并服务运行独立服务运行代理端口运行三种服务器运行方式。 一、先决条件&#xff1a; 1、O2Server服务器正常运行&#xff0c;系统安装部署请参考文…

Vue84-Vuex的工作原理与搭建开发环境

一、vuex工作原理 stats&#xff1a;是一个object对象&#xff0c;里面有很多key-value&#xff0c;存放的就是要操作的数据。mutations&#xff1a;是一个object对象&#xff0c;真正去操作stats的人。actions的作用&#xff1a;是一个object对象&#xff0c;当一个动作对应的…

【Spring Boot】关系映射开发(一):一对一映射

关系映射开发&#xff08;一&#xff09;&#xff1a;一对一映射 1.认识实体间关系映射1.1 映射方向1.2 ORM 映射类型 2.实现 “一对一” 映射2.1 编写实体2.1.1 新建 Student 实体2.1.2 新建 Card 实体 2.2 编写 Repository 层2.2.1 编写 Student 实体的 Repository2.2.2 编写…

DFS,BFS最短路,树与图的深度/广度优先遍历,拓扑排序

DFS 例题&#xff1a;排列数字 在排列组合问题中&#xff0c;每个位置需要尝试多个不同的数字组合&#xff0c;需要回溯以尝试不同的可能性。因此&#xff0c;需要显式地恢复现场&#xff08;撤销标记&#xff09;&#xff0c;以确保每个可能的路径都被探索。 #include <b…

从涟漪到波浪:资产代币化的变革力量

原文标题&#xff1a;《From ripples to waves: The transformational power of tokenizing assets》撰文&#xff1a;Anutosh Banerjee&#xff0c;Matt Higginson&#xff0c;Julian Sevillano&#xff0c;Matt Higginson编译&#xff1a;Chris&#xff0c;Techub News本文来…

还是NC,项目代码开源|scRNA+bulkRNA+因子分析验证地塞米松治疗Covid19

说在前面 平时发文章的话&#xff0c;做药物用的大多都是仅仅是GEO的bulkRNA&#xff0c;有人的有鼠的&#xff0c;然后做做流水线分析&#xff0c;最后面PCR。今天看一篇发NC的工作量&#xff0c;怎么用转录组分析做药物的转化免疫学 这篇文章作者已经上传Github了&#xff…

LabVIEW自动探头外观检测

开发了一套基于LabVIEW的软件系统&#xff0c;结合视觉检测技术&#xff0c;实现探头及连接器外观的自动检测。通过使用高分辨率工业相机、光源和机械手臂&#xff0c;系统能够自动定位并检测探头表面的细微缺陷&#xff0c;如划痕、残胶、异色、杂物等。系统支持多种探头形态&…

Spark SQL----数据类型

Spark SQL----数据类型 一、支持的数据类型二、浮点特殊值三、正负无穷语义四、NaN语义五、例子 一、支持的数据类型 Spark SQL和DataFrames支持以下数据类型&#xff1a; Numeric类型 ByteType&#xff1a;表示1字节的带符号整数。数字的范围从-128到127。ShortType&#xf…

【C++ OpenCV】机器视觉-二值图像和灰度图像的膨胀、腐蚀、开运算、闭运算

原图 结果图 //包含头文件 #include <opencv2/opencv.hpp>//命名空间 using namespace cv; using namespace std;//全局函数声明部分//我的腐蚀运算 Mat Erode(Mat src, Mat Mask, uint32_t x0, uint32_t y0) {uint32_t x 0, y 0;Mat dst(src.rows, src.cols, CV_8U…

如何在忘记密码的情况下重置Realme手机?

欢迎阅读我们关于如何在有或没有密码的情况下重置Realme手机的综合指南。无论您是忘记了密码&#xff0c;还是只是需要将设备恢复到出厂设置&#xff0c;我们都会为您提供所需的专业提示和技术专长。 发现分步说明、专家提示和行之有效的方法&#xff0c;轻松重新控制您的 Rea…

Hadoop3:集群压测-读写性能压测

一、准备工作 首先&#xff0c;我们要知道&#xff0c;平常所说的网速和文件大小的MB是什么关系。 100Mbps单位是bit&#xff1b;10M/s单位是byte ; 1byte8bit&#xff0c;100Mbps/812.5M/s。 测试 配置102、103、104虚拟机网速 102上用Python开启一个文件下载服务&#x…

Alpha2:使用深度强化学习挖掘公式化的超额收益因子(附论文及源代码)

原创文章第577篇&#xff0c;专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 今天说说因子挖掘&#xff0c;我们之前交付的Deap遗传算法因子挖掘&#xff0c;大家可以前往温习一下&#xff1a; 源码发布Quantlab4.2&#xff0c;Deap因子挖掘|gplearn做不到的…

【编译】strip去除符号表

文章目录 1. 去除符号表2. dbg信息的作用2.1 静态编译2.2 动态库编译方式 1. 去除符号表 作用&#xff1a;去除符号表可以极大缩小发布的二进制大小&#xff08;有时候可以缩小一半&#xff09; 去除手段共两种&#xff1a; 直接使用strip命令使用objcopy(更常用&#xff09;…

多线程编程的基本概念,C++标准库中的多线程支持(std::thread,std::async),如何处理线程同步和并发问题。

多线程编程在现代计算机系统中非常重要&#xff0c;因为它能够使程序同时执行多个操作&#xff0c;提高计算效率。以下是多线程编程的基本概念及如何在C标准库中使用std::thread和std::async进行多线程编程&#xff0c;同时处理线程同步和并发问题。 多线程编程的基本概念 线程…

K8S学习教程(二):在 PetaExpress KubeSphere容器平台部署高可用 Redis 集群

前言 Redis 是在开发过程中经常用到的缓存中间件&#xff0c;为了考虑在生产环境中稳定性和高可用&#xff0c;Redis通常采用集群模式的部署方式。 在制定Redis集群的部署策略时&#xff0c;常规部署在虚拟机上的方式配置繁琐并且需要手动重启节点&#xff0c;相较之下&#…