当前位置: 首页 > news >正文

QT事件Trick

拖动

void DWidget::mousePressEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){QListWidgetItem *selItem = currentItem();if(selItem!= nullptr){m_startPos=event->pos();  //记录鼠标按下时的起始位置}}QListWidget::mousePressEvent(event);
}void DWidget::mouseMoveEvent(QMouseEvent *event)
{if(event->buttons()&Qt::LeftButton){int instance=(event->pos()-m_startPos).manhattanLength();  //计算拖动位置与起始位置的距离if(instance>=QApplication::startDragDistance())  //防止手抖,必须超过一定距离。QApplication::startDragDistance()默认为4。{perfomDrag();}}
}
void DWidget::perfomDrag()
{QListWidgetItem *pItem = currentItem();  //当前拖动项if(pItem!= nullptr&&!pItem->text().contains(tr("参数"))){QDrag *drag = new QDrag(this);  //拖动类QMimeData *pMimedata = new QMimeData;DragParameters param=pItem->data(Qt::UserRole).value<DragParameters>();//传递数据QByteArray outBa;outBa.resize(sizeof(param));QBuffer buffer(&outBa);buffer.open(QIODevice::WriteOnly);QDataStream out(&buffer);out << param;buffer.close();pMimedata->setData("application/DragParameters",outBa);//拖动图片显示,显示参数名QString text=pItem->text();QPainter painter(&pix);painter.drawText(rect, text);drag->setPixmap(pix);drag->setMimeData(pMimedata);Qt::DropAction action = drag->exec(Qt::MoveAction);if(action==Qt::MoveAction)  //移动{}else if(action==Qt::IgnoreAction)  //拖动被拒、无接收{}}
}

QMimeData

Qt中封装MIME类型数据的容器,允许应用程序传输文本、图像、颜色、自定义二进制数据等。

application/DragParameters​:自定义MIME类型,明确标识拖拽操作中传递的数据类型,确保发送方和接收方使用同一标识解析数据

数据内容 (outBa)​​:类型为 QByteArray 的字节数组,包含实际传输的二进制数据。

相关文章:

  • 临床试验概述:从定义到实践的关键要素
  • Docker的常用命令
  • 为什么MySQL推荐使用自增主键?
  • 密码杂凑算法HaoLooog512设计原理详解
  • TRex 控制台命令解析
  • C++:BST、AVL、红黑树
  • 【Android】SettingsPreferenceService
  • 网络协议之为什么要分层
  • Mamba2模型的实现
  • 《系统架构 - Java 企业应用架构中的完整层级划分》
  • 大学之大:韩国科学技术研究院2025.4.28
  • 聊一聊接口自动化测试的稳定性如何保障
  • 探秘Transformer系列之(31)--- Medusa
  • 嵌入式RTOS实战:uC/OS-III最新版移植指南(附项目源码)
  • DAY9-USF4.0技术文档笔记
  • 学习笔记:Qlib 量化投资平台框架 — MAIN COMPONENTS (Part I)
  • PHP经验笔记
  • 【C++教程】三目运算符
  • Vue3中Hooks与普通函数的区别
  • 高效的CMS能帮助你快速建站。
  • 杭州一季度GDP为5715亿元,同比增长5.2%
  • 国家税务总局:“二套转首套”可以享受贷款利息个税专项扣除
  • 乌方称泽连斯基与特朗普进行简短会谈
  • 巴印在克什米尔发生交火
  • 台媒称美派遣前军官出任“汉光演习”资深观察员,国防部回应
  • 嫦娥五号《月球样品借用协议》签约,2025中国航天公益形象大使公布