QT中实现从桌面拖拽QTreeWidget上显示
2020-02-16 19:44
686 查看
在公司写完一些关于QTreeWidget的功能之后,突然告知要做一个拖拽的功能。
网上查了一下,大概需要这样做:
1.重写QTreeWidget类
2.重写类中的三个函数
void dragEnterEvent(QDragEnterEvent *event); void dragMoveEvent(QDragMoveEvent *event); void dropEvent(QDropEvent *event);
3.将重写后的QTreeWidget类做“提升为”,如图
输入“提升的类名称”后
提升完毕
下面是三个函数的具体实现
void MyQTreeWidget::dragEnterEvent(QDragEnterEvent *event) { //qDebug()<<"dragEnterEvent"; if (event->mimeData()->hasFormat("text/uri-list")) event->acceptProposedAction(); } void MyQTreeWidget::dragMoveEvent(QDragMoveEvent *event) { //qDebug()<<"dragMoveEvent"; } void MyQTreeWidget::dropEvent(QDropEvent *event) { //qDebug()<<"dropEvent"; QList<QUrl> urls = event->mimeData()->urls(); if(urls.isEmpty()) { qDebug()<<"drop url empty"; return; } foreach(QUrl url, urls) { //do something } }
这样一来就完事啦
需要注意的几点:
1.如果没有必要,dragMoveEvent可以不用重写
2.如果要改主窗口的东西,可以在foreach里把 url 当成信号 emit 出去,然后再在主窗口里写槽函数接收
3.可以注意到我是用 QList urls 来接收的,所以这个是可以多选拖拽的
4. url.toLocalFile() 返回文件(夹)绝对路径,url.fileName() 返回文件(夹)名
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- QT里实现Windows电脑三种关机方法
- QT5.5.0-msvc2013静态编译分享
- #树莓派#QT、串口环境配置
- #树莓派#使用QT实现串口信息检测与网络通信
- 学习笔记(01):C++QT5跨平台界面编程原理和实战大全-课程介绍
- 学习笔记(02):C++QT5跨平台界面编程原理和实战大全-QT5开发环境qtcreator、SDK和vs插件下载和安装...
- 学习笔记(08):C++QT5跨平台界面编程原理和实战大全-vs2015创建QT项目并详细介绍vs项目设置...
- 学习笔记(09):C++QT5跨平台界面编程原理和实战大全-VS设置编译的qt库版本和导出为qtcreator项目...
- 学习笔记(10):C++QT5跨平台界面编程原理和实战大全-qmake引入qt库创建窗口、设置头文件、分析makefile并设置输出...
- 学习笔记(12):C++QT5跨平台界面编程原理和实战大全-配置vs和qmake环境变量执行qmake生成makefile...
- 学习笔记(15):C++QT5跨平台界面编程原理和实战大全-qmake语法设置pro中的库导入路径和导入库,导入opencv...
- 学习笔记(16):C++QT5跨平台界面编程原理和实战大全-qmake创建动态链接和静态链接库并在windows中输出dll和lib...
- 学习笔记(17):C++QT5跨平台界面编程原理和实战大全-qtcreator的debug版本和release版本配置和设置...
- 学习笔记(18):C++QT5跨平台界面编程原理和实战大全-pro项目文件中设置dll和lib的输出路径并在ubuntu下测试so库...
- 学习笔记(21):学习OpenCV3.2+QT5+ffmpeg实战开发视频编辑器视频教程-使用opencv接口实现运行记时函数用来分析执行效率...
- 学习笔记(26):学习OpenCV3.2+QT5+ffmpeg实战开发视频编辑器视频教程-QT自定义opengl的Widget绘制Mat...
- qt5+opencv3 程序调试问题
- QT movetothread 后的线程同步
- 编译MINGW版本的VLC_QT库,版本1.1.1。
- http://www.riverbankcomputing.com/software/pyqt/download5