【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.pswp.cn/diannao/40357.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40357.shtml
英文地址,請注明出處:http://en.pswp.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;相較之下&#…