mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QDragEnterEvent> #include <QDropEvent> #include <QtDebug> #include <QMimeData> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); protected: // 重写拖拽事件 void dragEnterEvent(QDragEnterEvent *event); // 重写放下事件 void dropEvent(QDropEvent *event); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); // 接受drop事件 this->setAcceptDrops(true); } MainWindow::~MainWindow() { delete ui; } void MainWindow::dragEnterEvent(QDragEnterEvent *event){ // 根据mimeData选择是否允许放下的行为 if(event->mimeData()->hasFormat("text/uri-list")){ event->acceptProposedAction(); } } void MainWindow::dropEvent(QDropEvent *event){ // 获取文件地址 QString url = event->mimeData()->urls().first().toLocalFile(); qWarning()<<url<<endl; }