# QTPractice **Repository Path**: wadivision/qtpractice ## Basic Information - **Project Name**: QTPractice - **Description**: qt练习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-08 - **Last Updated**: 2024-12-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: Qt ## README # TestDragDrop 本项目用练习qt的拖拽事件。 练习三个个场景 * 场景1:从系统拖拽文件到 Edit 控件,在控件中显示文件的路径 * 场景2:在list中拖拽list中的项目,改变list上的项目的顺序 * 场景3:将一个list A中的项目拖拽到另外一个list B中 ## 名词翻译 drag:拖拽 drog:拖放 源控件:拖拽的起点 目标控件:接收拖放事件的控件 ## API接口 * setDragEnable : * setAcceptDrops: 目标控件设置为接收drops * dragEnterEvent(QDragEnterEvent *event) * dragLeaveEvent(QDragLeaveEvent* event) * dragMoveEvent(QDragMoveEvent* event) * dropEvent(QDropEvent* event) * mousePressEvent(QMousePressEvent* event): 拖拽事件的起始事件是鼠标按下事件 ## drag & drop 类 * QDragEnterEvent * QDragLeaveEvent * QDragMoveEvent * QDropEvent * QDrag:开始拖拽时设置 * setMimeData * setPixelMap * setHotSpot : * exec ## 拖拽事件过程 * drag:将数据编码打包到 mime 对象中 * drop:从mime对象中解码出数据使用 整个拖拽过程就像是 源控件 发送消息 ,目标控件接收消息,所以可以使用MIME格式 ![1733583502657](image/readme/1733583502657.png) # MIME格式 * MIME:Multipurpose Internet Mail Extension ## QMimeData 在Qt中提供了一个QMimeData类用于实现Mime数据格式,QMimeData中可以保存的数据有5类 * urls: QList `` * text : QString * html: QString * colorData : QVariant * data: QByteArray * ImageData : QVariant QMimeData中的方法和对应的类型: ![1733583329496](image/readme/1733583329496.png)