QT5 拖拽事件
时间:2019-11-16
本文章向大家介绍QT5 拖拽事件,主要包括QT5 拖拽事件使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我们在编写文本编辑器的时候,可能会希望其具有支持这种功能,将文件直接拖入文本编辑器器打开。
使用方法
- 1.包含头文件
//拖拽事件
#include <QDragEnterEvent>
//放下事件
#include <QDropEvent>
- 2.在类中加上如下声明
- 1)void dragEnterEvent(QDragEnterEvent *event);
- 2)void dropEvent(QDropEvent *event);
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
//复写”拖拽事件“函数
void dragEnterEvent(QDragEnterEvent *event);
//复写”放下事件“函数
void dropEvent(QDropEvent *event);
};
- 3.在类的构造函数中设置接受drop事件
//拖拽事件, 也就是可以直接将要打开的文件, 拖入此窗口打开
this->setAcceptDrops(true);
- 4.复写“拖拽事件”函数
void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
if(event->mimeData()->hasUrls())
{
event->acceptProposedAction();
}
else
{
event->ignore();
}
}
- 5.复写“放下事件”函数
void MainWindow::dropEvent(QDropEvent *event)
{
const QMimeData *mimeData = event->mimeData();
if(!mimeData->hasUrls())
{
return;
}
QList<QUrl> urlList = mimeData->urls();
//如果同时拖入了多个资源,只选择一个
QString fileName = urlList.at(0).toLocalFile();
if(fileName.isEmpty())
{
return;
}
//打开拖入的文件
QFile file(fileName);
if(!file.open(QIODevice::ReadOnly))
{
QMessageBox::information(this, "错误", file.errorString(), QMessageBox::Ok);
return;
}
//将文件内容放入文本框
QByteArray ba;
ba = file.readAll();
ui->textEdit->setText(QString(ba));
}
- 6.效果
- 1)拖入mainWindow,也就是我的主窗口
- 1)拖入mainWindow,也就是我的主窗口
这表示是成功的,注意这里拖入的是mainWindow
* 2)拖入textEdit和mainWindow的重叠区域
这里显然是失败的,为什么会这样?
我的窗口里面有一个textEdit,textEdit也能接受drop事件
原文地址:https://www.cnblogs.com/risesource/p/11873877.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】
- Android实现客户端语音动弹界面实例代码
- Android封装MVP实现登录注册功能
- Android5.1系统通过包名给应用开放系统权限的方法
- android 上传aar到私有maven服务器的示例
- Android Studio开发环境搭建教程详解
- android事件总线EventBus3.0使用方法详解
- Android仿淘口令复制弹出框功能(简答版)
- Android实现简单断点续传和下载到本地功能
- Android用MVP实现一个简单的类淘宝订单页面的示例
- Android Bitmap的截取及状态栏的隐藏和显示功能
- 详解Android沉浸式实现兼容解决办法
- AndroidStudio项目打包成jar的简单方法
- 浅谈React Native打包apk的坑
- Android 设置主题实现点击波纹效果的示例