尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

qt qtablewidget 行拖动(事件过滤器)
📅 发布时间:2026/6/18 18:47:22
#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));

相关新闻

  • 深入解析:以CodeBuddy Code为砚,Prompt为丹青,勾勒编程星河
  • transformers音频实战01-音频概念 - 教程
  • 本地部署overleaf服务帮助latex论文编写 —— 操作笔记

最新新闻

  • 深度剖析Notepad--:国产跨平台文本编辑器的架构解析与技术实现
  • 终极视频下载指南:如何用Tartube轻松管理YouTube视频库 [特殊字符]
  • 嵌入式硬件调试技术:实时追踪与BDM模式在ColdFire SCF5250上的实战解析
  • 2026广州花都税务合规避坑指南|适配汽车制造、美妆皮具、跨境电商企业实操攻略 - GrowthUME
  • 如何利用可视化工具提升模型调试效率?终极性能优化指南
  • 如何快速备份微信聊天记录:终极本地存储解决方案

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号