drag,drop,datatransfer小结

虽然可以用mousedown、mousemove、mouseup实现拖放功能,但它们只支持浏览器内拖放,而html5 的API中,已经可以支持浏览器与其他应用程序之间数据元素的相互拖动。


1、属性 
draggable:想要对某对象元素进行拖动操作,就可以把它的draggable属性值设置为true(draggable=“true”)。
此外,img元素和a元素(必须指定href)默认允许拖放。



2、

   事 件                           产生事件的元素                               描述                          

dragstart                   被拖放的元素                                开始拖放操作

drag                          被拖放的元素                                拖放过程中

dragenter                  拖放过程中鼠标经过的元素             被拖放的元素开始进入本元素的范围内

dragover                   拖放过程中鼠标经过的元素              被拖放的元素在本元素范围内移动

dragleave                  拖放过程中鼠标经过的元素              被拖放的元素离开本元素的范围

drop                          拖放的目标元素                              有其他元素拖放到本元素中

dragend                    拖放的对象元素                              拖放操作结束


3、DataTransfer 接口

html5支持拖曳数据存储,使用datatransfer接口,作用于元素的拖曳基础上。

var dt = ev.dataTransfer;


属性:

datatransfer.effectAllowed = value     

//一般在ondragstart事件中设定,返回允许执行拖曳操作效果,可以设置修改:none,                                                                 copy,copyLink, copyMove,link,linkMove,move,all,uninitialized


datatransfer.types                              

 //返回在dragstart事件出发时为元素存储数据的格式,如果是外部文件的拖曳,则返                                                                     回“filse”


datatransfer.clearData([format])           

//删除指定格式的数据,如果未指定,则删除当前元素所有数据


datatransfer.setData(format,data)        

 //为元素添加指定数据,现支持拖动处理的MIME的类型有:text/plain,text/html,                                                                   text/xml,text/uri-list


datatransfer.getData(format)                

//返回指定数据,如果数据不存在,则返回空字符串


datatransfer.files                                  

 //如果是拖曳文件,返回文件列表FileList


datatransfer.setDragImage(element, x, y)  

 //制定拖曳元素时跟随鼠标移动的图片,想,y分别为相对鼠标的坐标


datatransfer.addElement(element)          

 //添加一起跟随拖曳的元素


demo:

http://www.zhangxinxu.com/study/201102/html5-drag-and-drop.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt的拖放功能(Drag and Drop)是一种常用的用户界面交互方式,可以实现将数据从一个控件拖动到另一个控件的操作。在Qt中,拖放操作通常涉及两个角色:拖动源(Drag Source)和拖放目标(Drop Target)。 要实现拖放功能,首先需要设置拖动源和拖放目标的属性。对于拖动源,你可以使用`setDragEnabled(true)`方法来启用拖动功能,并通过`setMimeData()`方法设置传输的数据。对于拖放目标,你可以使用`setAcceptDrops(true)`方法来接受拖放操作,并通过`dragEnterEvent()`、`dragMoveEvent()`和`dropEvent()`等事件处理函数来处理不同的拖放事件。 以下是一个简单的示例代码,演示了如何在Qt中实现基本的拖放功能: ```cpp // 拖动源 class DragLabel : public QLabel { public: DragLabel(const QString& text, QWidget* parent = nullptr) : QLabel(text, parent) { setAcceptDrops(false); setDragEnabled(true); } void mousePressEvent(QMouseEvent* event) { if (event->button() == Qt::LeftButton) { QDrag* drag = new QDrag(this); QMimeData* mimeData = new QMimeData; mimeData->setText(text()); drag->setMimeData(mimeData); drag->exec(Qt::CopyAction); } } }; // 拖放目标 class DropLabel : public QLabel { public: DropLabel(QWidget* parent = nullptr) : QLabel(parent) { setAcceptDrops(true); } void dragEnterEvent(QDragEnterEvent* event) { if (event->mimeData()->hasText()) { event->acceptProposedAction(); } } void dragMoveEvent(QDragMoveEvent* event) { event->accept(); } void dropEvent(QDropEvent* event) { setText(event->mimeData()->text()); } }; // 主窗口 int main(int argc, char** argv) { QApplication app(argc, argv); QWidget window; QVBoxLayout layout(&window); DragLabel dragLabel("Drag me"); DropLabel dropLabel; layout.addWidget(&dragLabel); layout.addWidget(&dropLabel); window.show(); return app.exec(); } ``` 上述代码创建了一个拖动源(`DragLabel`)和一个拖放目标(`DropLabel`),拖动源是一个可拖动的标签,当鼠标左键按下时,开始拖动,并将文本数据传输给拖放目标。拖放目标是另一个标签,当拖动源进入其区域时,会接受并显示拖动的文本数据。 这只是一个简单的示例,你可以根据自己的需求进行更复杂的拖放操作,例如传输自定义数据类型、处理多个拖动源和拖放目标等。希望能对你有所帮助!如有更多问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值