Qt学习之路28--拖放事件

什么是拖放事件?

将一个文件往应用程序窗口里拖放时,操作系统能感知这个动作,并发送系统消息到应用程序后会产生一个拖放事件。
拖放事件分为两部分,将文件拖到窗口内部和松开鼠标。

怎么处理拖放事件?

  • 所有的QWidget对象都能处理拖放事件
  • 通过两个函数实现事件处理(分别对应拖和放):
    -void dragEnterEvent(QDragEnterEvent* event);这个事件处理程序在拖动过程中被调用,当鼠标拖动文件进入当前QWidget对象中时,拖拽事件通过参数event进行传递,如果拖拽事件被忽略后,当前QWidget对象就不会收到任何相关消息。
    -void dropEvent(QDropEvent* event) ;当拖拽被放下时将会产生QDropEvent事件,通过参数event进行事件传递。
    所以在拖放事件的处理上需要对拖和放两个动作进行处理。

拖放事件中的QMimeData

  • QMimeData是Qt中的多媒体数据类
  • 拖放事件通过QMimeData对象传递数据
  • QMimeData支持多种不同类型的多媒体数据,包括文本、html数据、合法路径、图片、颜色等。
  • 操作QMimeData数据对象的常用函数:
    这里写图片描述
    包含测试MIME数据的类型、获取MIME数据和设置MIME数据。

自定义拖放事件步骤

  • 首先需要对接收拖放事件的对象调用setAcceptDrops(bool on);该属性作用为设置QWidget对象是否可以接收QDropEvent事件,默认为不接收此事件。注意:不要在拖放事件处理函数里面修改该属性。
  • 重写dragEnterEvent(QDragEnterEvent* event)事件处理函数,并判断MIME数据类型
    -期望数据:调用even
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值