QT学习:QDropEvent拖拽事件

  • 步骤
  • 实现

使用QT实现一个如下的拖拽、拖放动作,只需要三步。主要是使用dropEvent和dragEnterEvent事件处理即可以。

步骤

  • 1、setAcceptDrops(true)设置目的QWidget接收拖拽拖放事件
  • 2、重写dragEnterEvent事件,并对正确的事件进行acceptProposedAction接受操作
  • 3、重写dropEvent事件,处理主要的逻辑即可

实现

在UI中画好布局,然后全部代码如下所示:

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);setAcceptDrops(true); // 1. 整个MainWindow接收拖拽事件
}// 2.重写拖拽进入事件
void MainWindow::dragEnterEvent(QDragEnterEvent* event)
{if (event->mimeData()->hasUrls()) {event->acceptProposedAction();  // 3. 有拖拽文件时设置接受}
}// 4.重写件拖拽放下事件,处理所需
void MainWindow::dropEvent(QDropEvent *event)
{if (event->mimeData()->hasUrls()) {QList<QUrl> urls = event->mimeData()->urls();if(urls.isEmpty()) {return;}ui->textEdit->setText(urls.first().toLocalFile());}
}

dragEnterEvent中判断如果当前mime类型为文本或者url(本地文件是以url类型描述的),则调用acceptProposedAction来设置对应的事件发生flag——只有设置了这个flag,后面的drop事件才会发生。如果要捕获所有类型的拖放事件则可以直接调用acceptProposedAction

QT学习:QDropEvent拖拽事件相关推荐

  1. JavaScript学习第十六天(键盘事件、表单事件、拖拽事件、框架事件、媒体事件)

    文章目录 键盘事件 表单事件 剪贴板事件 拖拽事件 打印事件 框架事件 媒体事件 总结 键盘事件 onkeydown 键盘按下事件,当有按键按下时触发 onkeyup 键盘松开事件,当有按键被松开时触 ...

  2. 中如何使用echart_jQueryEasyUI中的拖拽事件如何使用

    jQueryEasyUI中的拖拽事件通过给它设置代理元素使其拖拽.可设置拖动元素相对于x.y轴拖动,可设置拖拽何时停止等效果 jQuery中的easyui是一个非常好用的插件,它虽然使用简单方便,但是 ...

  3. jquery UI 跟随学习笔记——拖拽(Draggable)

    jquery UI 跟随学习笔记--拖拽(Draggable) 引言 这周暂时没有任务下达,所以老大给我的任务就是熟悉jquery相关插件,我就先选择了jquery UI 插件,以及jquery库学习 ...

  4. 2018年首篇,带大家一起学习视图拖拽功能的源码

    今天的快讯我们对2017年的重大事件进行一下回顾吧. 乐视事件 回溯乐视的2017,"眼看他起朱楼,眼看他宴宾客,眼看他楼塌了".乐视历经了来自融创中国百亿融资.高层相继离职.裁员 ...

  5. 弹出框的鼠标拖拽事件

    几个与定位有关的概念: js: clientX/clientY属性:获得事件发生时鼠标指针在视口中的水平和垂直坐标. screenX/screenY属性:获取鼠标事件发生时鼠标光标相对于整个电脑屏幕的 ...

  6. UGUI事件之Drag拖拽事件

    UI事件之Drag拖拽事件 ======================================================== 2.UGUI 事件命名空间 当我们需要使用 UGUI 中的 ...

  7. JavaFX鼠标拖拽事件

    一.节点原拖拽事件 //鼠标拖拽进入node node.setOnMouseDragEntered(event->{//do something });//鼠标拖拽退出node node.set ...

  8. [html] HTML5拖拽事件的顺序是什么?

    [html] HTML5拖拽事件的顺序是什么? ondragstart :源对象开始被拖动 ondrag:源对象被拖动过程中 ondragend:源对象被拖动结束ondragenter:源对象拖动着进 ...

  9. Android--Launcher拖拽事件详解【androidICS4.0--Launcher系列二】

    AndroidICS4.0版本的launcher拖 拽的流程,基本和2.3的相似.就是比2.3写的封装的接口多了一些,比如删除类的写法就多了个类.等等.4.0的改变有一些,但是不是特别大.这个月一 直 ...

最新文章

  1. 22岁专访库克、B站3天涨粉百万,他将毕设树莓派扫描仪升级,繁星散落在校空!...
  2. 【AMAD】import-string -- 通过字符串来import一个对象
  3. 首个64层3D NAND闪存技术出现
  4. postgresql 获取所有表名、字段名、字段类型、注释
  5. [Struts]Token 使用及原理
  6. [译]NectarJS:编译JavaScript为任意平台原生二进制代码
  7. 定时任务框架APScheduler学习详解
  8. 避坑!gulp-imagemin运行出问题
  9. jvm 安装位置_简单了解JVM
  10. java与微信小程序通讯_java与微信小程序实现websocket长连接
  11. 沟通CTBS助真科电子跨平台接入
  12. 金蝶专业版怎么反过账当月_金蝶KIS专业版怎么反过账
  13. jeecms常见用法
  14. 【Unity】Jay 开发日志(一)——人物的移动、死亡与平台跳跃
  15. 阿拉伯数字转换成大写的数字
  16. 51单片机矩阵键盘的控制原理-扫描及使用方式
  17. SEO是什么意思?seo入门者必读
  18. Mac系统重装 “未能安装在您的电脑上 没有符合安装资格的软件包” 具体解决方案
  19. 新增数据并发处理,避免重复数据插入
  20. ffmpeg4.2.2 实现封装格式文件(如flv)解码成yuv420p和pcm

热门文章

  1. 怎么设置计算机的快捷键图标,Win7旗舰版如何更改桌面快捷方式和文件类型图标...
  2. 2022-2027年中国网络定制巴士行业发展前景及投资战略咨询报告
  3. Yolov3、v4、v5、Yolox模型权重及网络结构图资源下载
  4. 关于如何解决IDEA中修改HTML或CSS,但是服务器上的HTML却不改变的问题
  5. 第一章 MATLAB简介
  6. 得物从0到1自研客服IM系统的技术实践之路
  7. matlab变步长的梯形公式,用变步长梯形法计算积分∫sinx/x*x的近似值(二分二次即可)...
  8. IO 多路复用:C10K 问题
  9. datax 学习记录
  10. Springboot整合SQLServer