Qt Drag & Drop: добавление поддержки перетаскивания файлов в главное окно приложения

Множество приложений позволяет пользователям перетаскивать файл или файлы в главное окно приложения.

Как добавить поддержку этой функции в моем собственном приложении Qt?

Ответ 1

Перегрузите dragEnterEvent() и dropEvent() в свой класс MainWindow и вызовите setAcceptDrops() в конструкторе:

MainWindow::MainWindow(QWidget *parent)
{
    ..........
    setAcceptDrops(true);
}

void MainWindow::dragEnterEvent(QDragEnterEvent *e)
{
    if (e->mimeData()->hasUrls()) {
        e->acceptProposedAction();
    }
}

void MainWindow::dropEvent(QDropEvent *e)
{
    foreach (const QUrl &url, e->mimeData()->urls()) {
        QString fileName = url.toLocalFile();
        qDebug() << "Dropped file:" << fileName;
    }
}

Ответ 3

Я получил весь код по этой ссылке: Перетаскивание файлов в ваше приложение. Вы можете скачать ZIP с этой страницы.

Код работал идеально для меня, единственное, что я должен сделать, чтобы сделать работу с этим кодом, было включить в мой mainwindow.h:

#include <QMimeData>

Это все, надеюсь, это может вам помочь.