第40课 拖放事件深度剖析

1. Qt中的拖放事件

(1)拖放一个文件进入窗口时将触发拖放事件

(2)每一个QWidget对象都能够处理拖放事件

(3)拖放事件的处理函数为

  void dragEnterEvent(QDragEnterEvent* e);

  void dropEvent(QDropEvent* e);

2. 拖放事件中的QMimeData

(1)QMimeData是Qt中的多媒体数据类

(2)拖放事件通过QMimeData对象传递数据

(3)QMimeData支持多种不同类型的多媒体数据

(4)常MIME类型数据处理函数


测试函数


获取函数


设置函数


MIME类型


hasText()


text()


setText()


text/plain


hasHtml()


Html()


setHtml()


text/html


hasUrls()


Urls()


setUrls()


text/uri-list


hasImage()


imageData()


setImageData()


image/*


hasColor()


colorData()


setColorData()


application/x-color

3. 自定义拖放事件的步骤

(1)对接收拖放事件的对象调用setAccpetDrops成员函数

(2)重写dragEnterEvent函数并判断MIME类型

  ①如果是期望数据:e->acceptProposedAction();

  ②如果是其它数据:e->ignore();

(3)重写dropEvent函数并判断MIME类型

  ①如果是期望数据:从事件对象中获取MIME数据并处理

  ②其它数据:e->ignore();

【编程实验】拖放事件初探

4. 文本编辑器中的拖放事件

(1)文本编辑器中的拖放操作

(2)解决方案

  ①调用主窗口对象的setAcceptDrops成员函数

  ②重写dragEnterEvent函数并判断MIME类型

  ③重写dropEvent函数并判断MIME类型后打开文件

【编程实验】文本编辑器中的拖放事件

5. 小结

(1)QWidget对象都能够处理拖放事件

(2)自定义拖放事件的方法

  ①调用事件接收对象的setAcceptDrops成员函数

  ②重写dragEnterEvent函数并判断MIME类型

  ③重写dropEvent函数并判断MIME类型后进行事件处理

时间: 2024-10-12 16:20:20

第40课 拖放事件深度剖析的相关文章

第59课 类模板深度剖析

多参数类模板: 特化: 上图特化的意义是将原来接收任意两个类型参数的模板特化为只能接收一种类型的两个参数. 这意味着如果定义类时我们给的两个参数是同种类型的,则编译器优先使用右边的这种模板实现. 一个类模板实际分开实现为两个部分,编译器根据具体的参数选择其中的一个模板. 编译器会认为上图中的两个Test模板是同一个,具体实现时,如参数类型不同则选择左边的实现,参数类型相同时选择右边的实现. 完全特化就是我们根本就不需要泛指参数了,直接指定原先的泛指类型全部为int,完全特化意味着特化之后的模板里

专题2-通过按键玩中断\第1课-中断处理流程深度剖析-lesson1

1.程序优化 修改Makefile 把main.c里面的mmu代码复制到mmu.c并修改如下 main.c的修改

84课:StreamingContext、DStream、Receiver深度剖析

StreamingContext.DStream.Receiver深度剖析 本课分成四部分讲解,第一部分对StreamingContext功能及源码剖析:第二部分对DStream功能及源码剖析:第三部分对Receiver功能及源码剖析:最后一部分将StreamingContext.DStream.Receiver结合起来分析其流程. 一.StreamingContext功能及源码剖析: 1.  通过Spark Streaming对象jssc,创建应用程序主入口,并连上Driver上的接收数据服务

Spark2.0从入门到精通:Scala编程、大数据开发、上百个实战案例、内核源码深度剖析视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

[ 1011] <<C语言深度剖析>> 测试 TEST

/******************************** **  wzsts<C语言深度剖析>2016 ** **                    ** **     fun1~fun6代表6章节内容 ** **fun10~fun19代表fun1所调用函数 ** **                    ** **     世界因规则而美好     ** ** #if(1)可运行,#if(0)不运行. ** ** Data  Author   PC       ** **16

横瓜先生深度剖析QQ空间前端后端技术AJAX与FORM等等

[皇帝]北京-横瓜-7年(601069289)  22:06:34 [元帅]横瓜-PHP教父(601069289)  21:35:29 这里是QQ空间的图片上传方法 是FLASH 我草 [元帅]横瓜-PHP教父(601069289)  21:36:31 竟然不是JS QQ空间用FLASH 图片上传方法 [元帅]横瓜-PHP教父(601069289)  21:37:35 至此,整个QQ空间的技术,已经全部被我破解 @IT柏拉图 [元帅]IT柏拉图(2500875)  21:38:11 你真是天才,

libevent 源码深度剖析十三

libevent 源码深度剖析十三 -- libevent 信号处理注意点 前面讲到了 libevent 实现多线程的方法,然而在多线程的环境中注册信号事件,还是有一些情况需要小心处理,那就是不能在多个 libevent 实例上注册信号事件.依然冠名追加到 libevent 系列. 以 2 个线程为例,做简单的场景分析. 1 首先是创建并初始化线程 1 的 libevent 实例 base1 ,线程 1 的 libevent 实例 base2 : 2 在 base1 上注册 SIGALRM 信号

libevent源码深度剖析二

libevent源码深度剖析二 --Reactor模式 张亮 前面讲到,整个libevent本身就是一个Reactor,因此本节将专门对Reactor模式进行必要的介绍,并列出libevnet中的几个重要组件和Reactor的对应关系,在后面的章节中可能还会提到本节介绍的基本概念. 1 Reactor的事件处理机制 首先来回想一下普通函数调用的机制:程序调用某函数?函数执行,程序等待?函数将结果和控制权返回给程序?程序继续处理. Reactor释义"反应堆",是一种事件驱动机制.和普通

libevent源码深度剖析四

libevent源码深度剖析四 --libevent源代码文件组织 1 前言 详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的.本节内容不多,我想并不是说它不重要! 2 源代码组织结构 Libevent的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件.内部使用的头文件.辅助功能函数.日志. libevent框架.对系统I/O多路复用机制的封装.信号管理.定时事件管理.缓冲区管理.基本数据结构和基于libevent的两