使用QT实现拖拽文件检测
文章目录
一、简介
在一些网页或者软件中,经常存在一些拖拽放入即可实现获取文件的操作,而在Qt中,也可以实现类似的操作。这不仅能够给我们带来很好的交互体验,也能使得一些操作变得简单。
以下是本文将实现效果示意图:
在开始实现之前需要提一下,我这里使用的开发平台是:
使用开发平台:
- Windows 10
- Qt 5.12.3
编译环境:
- MinGW 32-bit Debug
理论上来讲,使用其他版本的Qt也能实现类似的效果。另外,值得注意的是,在本文中将不再赘述新建工程相关的操作,需要的朋友可以自行搜索!本文着重讲代码部分,望谅解!!!
二、 UI 设计
在新建工程的过程中使用 widget
模板创建 UI
文件。随后对 UI
进行如下绘制:
图中箭头有点密集,可自行放大查看!!!另外由于我对Qt进行了主题颜色的更改,因此图中不是最后效果图。
布局方面没有什么好解释的,在对 Label_2
的处理上,采用了一张 png
图标,这里需要对其属性进行以下设置:
同时,需要提前将该图片文件添加进资源库,否则会出现编译之后不显示的情况。不会这步操作的话,这里可以看一下这位大佬的文章:Qt之使用图片填充QLabel_qt怎么把图片嵌入到程序的内标签空间-CSDN博客
另外,我对图中的 widget
控件属性样式进行了更改,其样式为:
QWidget {
background-color: rgb(209, 209, 209);
border-radius:10%;
}
更改样式的操作也不再赘述,不会的朋友可以自行百度!本文着重讲代码部分,望谅解!!!
由此,我们对 UI
部分构建完成,其运行后的样式为:
三、代码构建
这里我所建立的工程结构如下所示,后续描述中,将用图中的文件名代替。
这里实现思路是,重写 dragEnterEvent、dragLeaveEvent、dropEvent
三个事件,其分别是 拖动进入的时候事件触发、拖动离开的时候事件触发、拖动触发。
具体介绍可以参考该大佬的文章:Qt应用开发(基础篇)——拖放机制 Drag and Drop_qt拖动时间-CSDN博客
- 首先将对图中所示
releasecheck.h
文件进行改写,以下是其实现部分:
#ifndef RELEASECHECK_H
#define RELEASECHECK_H
#include