【QT】窗口通过dragEnterEvent和dropEvent拖拽导入文件

【QT】窗口通过dragEnterEvent和dropEvent拖拽导入文件

界面允许接受拖拽

在界面的构造函数中设置接受拖拽放置文件

cpp 复制代码
setAcceptDrops(true);  

拖拽进入、放下事件

dragEnterEvent函数对拖动的文件进行过滤,如果不符合过滤条件按将无法拖拽进入窗口

dropEvent函数为拖进来后放下的事件,放入窗口后继续后续的处理

cpp 复制代码
void dragEnterEvent(QDragEnterEvent*event);//拖拽进入事件
void dropEvent(QDropEvent*event);//放下事件
cpp 复制代码
void MainWindow::dragEnterEvent(QDragEnterEvent*event)  //拖拽进入事件
{
    //如果类型后缀三个字符是xxx文件才能接受拖拽进入
   if(!event->mimeData()->urls()[0].fileName().right(3).compare("xxx"))
       event->acceptProposedAction();
    else
       event->ignore();//否则不接受事件
}
void MainWindow::dropEvent(QDropEvent*event)    //放下事件
{
    const QMimeData*qm=event->mimeData();//获取MIMEData
    mFileName = qm->urls()[0].toLocalFile();	//获取拖入的文件名
    ... //后续处理
}
相关推荐
LilySesy4 分钟前
【与AI+】英语day1——ABAP基础与数据类型
开发语言·ai·sap·abap
你不是我我7 分钟前
【Java 开发日记】我们来说一下 b+ 树与 b 树的区别
java·开发语言
2501_9249526914 分钟前
C++中的过滤器模式
开发语言·c++·算法
左左右右左右摇晃14 分钟前
Java笔记——IO
java·开发语言·笔记
2401_8732046515 分钟前
C++中的组合模式实战
开发语言·c++·算法
twc82916 分钟前
Query 改写 大模型测试的数据倍增器
开发语言·人工智能·python·rag·大模型测试
Byron__18 分钟前
HashSet/LinkedHashSet/TreeSet 原理深度解析
java·开发语言
CQU_JIAKE20 分钟前
3.23[Q]s
开发语言·windows·python
2401_8318249621 分钟前
高性能压缩库实现
开发语言·c++·算法
2401_8747325328 分钟前
C++中的策略模式进阶
开发语言·c++·算法