简介
拖拽事件是我们在设计软件时常用的事件,比如我们把要上传的文件拖拽到指定区域实现自动上传,或者拖动到指定文件夹等。
这里主要介绍如何实现拖动事件,包括事件的进入dragEnterEvent, 事件的放弃dropEvent等。我们要实现一个拖动demo,
将文件拖动到主窗口区域,然后在主窗口的textEdit控件中显示文件的内容。
主窗口构造
创建项目名字为dragevent,然后选择创建QApplication项目,我们的类名叫做MainWindow,基类选择QMainWindow。
我们需要在主窗口的ui文件中添加QTextEdit控件,点击Forms下的mainwindow.ui,将QTextEdit拖动到主窗口界面上。
然后我们需要在主窗口构造函数中添加如下代码
setAcceptDrops(true);
ui->textEdit->setAcceptDrops(false);
设置主窗口可以接收拖动的放下事件。禁用textEdit的放下事件。
重写拖拽进入事件
我们需要在MainWindow类里重写dragEnterEvent事件函数,该函数主要是重写拖动进入某个控件后要执行的逻辑,所以我们在MainWindow类里重写
void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
//判断是否包含url
if