qt qtablewidget 行拖动(事件过滤器)

news/2025/10/3 11:34:06/文章来源:https://www.cnblogs.com/RYSBlog/p/19124417
#include <QTableWidget>
class TablewidgetLineDropFilter : public QObject {Q_OBJECT
public:explicit TablewidgetLineDropFilter(QTableWidget* _box,QObject *parent = nullptr) : QObject(parent) {tablewidget=_box;}bool eventFilter(QObject *obj, QEvent *event) override {if(event->type() == QEvent::Drop){int row_src,row_dst;row_src = tablewidget->currentRow();                        // 原行号 可加ifQDropEvent *dropEvent = static_cast<QDropEvent*>(event);QTableWidgetItem *item = tablewidget->itemAt(dropEvent->pos()); // 获取落点的itemif(item !=nullptr){                                        // 判断是否为空row_dst = item->row();                                 // 不为空 获取其行号// 保证鼠标落下的位置 就是拖拽的一行最后所移动到的位置(考虑插入新行 移除原行的上下变化)row_src = (row_src > row_dst?    row_src + 1:row_src); // 如果src在dst的下方(行号大),后续插入dst会影响src的行号row_dst = (row_src < row_dst?    row_dst + 1:row_dst); // 如果src在dst的上方(行号小),后续移除src会影响dst的行号tablewidget->insertRow(row_dst);                              // 插入一行}else{                          // 落点没有item 说明拖动到了最下面row_dst = tablewidget->rowCount();// 获取行总数tablewidget->insertRow(row_dst);  // 在最后新增一行}// 执行移动 并移除原行for(int i = 0;i < tablewidget->columnCount();i++){            // 遍历列tablewidget->setItem(row_dst,i,tablewidget->takeItem(row_src,i));// 每一列item的移动}tablewidget->removeRow(row_src); // 删除原行//            for(int i = 0;i < tablewidget->columnCount();i++){
//                QTableWidgetItem* selectedItem = tablewidget->item(row_dst, i);
//                tablewidget->setCurrentItem(selectedItem);
//            }return true;}return QObject::eventFilter(obj, event);}
private:QTableWidget* tablewidget;
};

应用

table->setDragEnabled(true);  // 允许拖动table->setAcceptDrops(true);  // 接受放置table->setDragDropMode(QAbstractItemView::InternalMove);  // 内部移动模式table->setSelectionBehavior(QAbstractItemView::SelectRows);  // 整行选择table->setDropIndicatorShown(true);  // 显示放置位置指示table->viewport()->installEventFilter(new TablewidgetLineDropFilter(table));

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

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

相关文章

3.8 材料链路层设备 (答案见原书 P122)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

for (EmpExpr empExpr : exprList) {}语法糖

for (EmpExpr empExpr : exprList) {循环体}这段代码表示对名为exprList的集合进行遍历,每次循环取出其中的元素作为EmpExpr类型的对象empExpr。 (遍历 exprList 集合中的每一个元素,每次循环将当前元素赋值给 empE…

251003

目录JT-JY6T3S1-1JT-JY6T3S2-2FT-(JY&VOAs) JT-JY6T3S1-1Good morning, id like to open the bank account please. Certainly, if youd like to take a seat , iwill just get some details from you, you wont t…

wordpress建站博客网站建设公司业务跟不上

3D产品配置器能够为企业的客户带来多重好处&#xff0c;提升他们的整体购物体验和满意度。 主要优势分析&#xff1a; 1、 提升购物体验&#xff1a;3D产品配置器通过提供交互式的3D可视化体验&#xff0c;使客户能够从不同角度查看和理解产品&#xff0c;从而提升他们的购物体…

济宁网站建设 果壳科技wordpress制作数据排行榜

引言 什么是分布式锁&#xff1f; 分布式锁是分布式系统中用于控制多个进程或线程对共享资源的访问的一种机制。在分布式系统中&#xff0c;由于存在多个服务实例或节点&#xff0c;它们可能会同时尝试访问或修改同一份数据或资源。如果没有适当的同步机制&#xff0c;就可能导…

怎么做个人网站建设wordpress关闭注册发邮件

目录快捷键文字样式设置&#xff08;字体, 大小, 颜色, 高亮底色&#xff09;内嵌HTML表格定义列表代码块脚注数学公式UML 图:离线写博客常见颜色[TOC](目录)快捷键 - 加粗 Ctrl B - 斜体 Ctrl I - 引用 Ctrl Q- 插入链接 Ctrl L- 插入代码 Ctrl K- 插入图…

1核1g服务器做网站网页生成助手

大家好&#xff0c;这里是深海网络&#xff0c;今天给大家讲解一下新版影视小程序搭建。  首先给大家看一下新版影视小程序是什么样子的&#xff0c;它有黑夜和白天两种观影模式&#xff0c;而且搜索精准&#xff0c;播放速度快。01第一步&#xff0c;开始正式搭建。新版区小…

深入解析:以CodeBuddy Code为砚,Prompt为丹青,勾勒编程星河

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

学习项目movie-web:构建本地电影、电视视频中心 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Rust泛型详解 - 实践

Rust泛型详解 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

网站建设课程的感想在线考试系统网站开发

算法提高课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 给定一个长度为 n n n 的数组&#xff0c;数组中的第 i i i 个数字表示一个给定股票在第 i i i 天的价格。 设计一个算法来计算你所能获取的最大利润&#xff0c;你最多可以完成 k k k 笔交易…

怎么做自己的购物网站怎么给自己建网站

文章目录树状数组lowbit线段树与树状数组单点修改区间查询区间修改区间求和二维树状数组离线树状数组例题POJ&#xff1a;starsMooFest[SDOI2009]HH的项链Turing TreeCounting SequencesZip-line树状数组 用于快速高效的计算与前缀和相关的信息 lowbit int lowbit( int i ) …

有个做搞笑视频的网站桂林市天气预报15天准确

在开发项目过程中&#xff0c;为了方便调试代码&#xff0c;经常会向stdout中输出一些日志&#xff0c;默认的这些日志就直接显示在了终端中。而一般的应用服务器&#xff0c;第三方库&#xff0c;甚至服务器的一些通告也会在终端中显示&#xff0c;这样就搅乱了我们想要的信息…

番禺 大石网站建设建筑模板制作过程

是什么 官网&#xff1a;Redis cluster specification | Redis 由于数据量过大&#xff0c;单个Master复制集难以承担&#xff0c;因此需要对多个复制集进行集群&#xff0c;形成水平扩展每个复制集只负责存储整个数据集的一部分&#xff0c;这就是Redis的集群&#xff0c;其作…

AT_abc205_e [ABC205E] White and Black Balls

本质上就是将卡特兰数的 \(y = x\) 这条限制线移到了 \(y = x + k\) 这条限制线,格路计数即可。

transformers音频实战01-音频概念 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做发包业务网站wordpress主题谁的最好

说明 本文根据B站up主唐老狮的课程所学所记 目录 说明本文根据B站up主唐老狮的课程所学所记 UML面向对象七大原则总体实现目标单一职责原则&#xff08;SRP&#xff0c;Single Responsibility Principle&#xff09;开闭原则&#xff08;OCP&#xff0c;Open-Closed Principle…

网站建设介绍大全杭州网络推广专员

浅谈web应用的负载均衡、集群、高可用(HA)解决方案转载于:https://www.cnblogs.com/hfultrastrong/p/7887420.html

Python 自动化导出PDF表格:List、Dictionary、Pandas DataFrame和数据库实例演示 - 指南

Python 自动化导出PDF表格:List、Dictionary、Pandas DataFrame和数据库实例演示 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importan…

Rust Slint库达成桌面萌宠源码分享(包含拖动、右键菜单效果)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …