Qt/Utilities/DragAndDropFiles

From ProgrammingExamples
< Qt
Jump to: navigation, search

DragAndDropFiles.cpp

#include <QApplication>
 
#include "form.h"
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MyForm form;
 
    form.show();
    return app.exec();
}

form.h

#ifndef FORM_H
#define FORM_H
 
#include "ui_form.h"
 
class MyForm : public QWidget, private Ui::Form
{
	Q_OBJECT
public:
    MyForm(QWidget *parent = 0);
protected:
  void dropEvent ( QDropEvent * event );
 
  void dragEnterEvent ( QDragEnterEvent * event ) ;
 
public slots:
 
};
 
#endif

form.cpp

// Smarter handling explained here:
// http://www.informit.com/articles/article.aspx?p=1405546
 
#include "form.h"
 
#include <iostream>
 
#include <QDropEvent>
 
MyForm::MyForm(QWidget *parent) : QWidget(parent)
{
  setupUi(this);
  this->setAcceptDrops(true);
}
 
void MyForm::dropEvent ( QDropEvent * event )
{
  std::cout << "dropEvent." << std::endl;
 
  //QString filename = event->mimeData()->data("FileName");
  QString filename = event->mimeData()->text();
  std::cout << "Loaded " << filename.toStdString() << std::endl;
}
 
void MyForm::dragEnterEvent ( QDragEnterEvent * event ) 
{
  std::cout << "dragEnterEvent." << std::endl;
 
  event->accept();
}

form.ui

 

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
 
PROJECT(DragAndDropFiles)
 
FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})
 
QT4_WRAP_UI(UISrcs form.ui)
QT4_WRAP_CPP(MOCSrcs form.h)
 
include_directories(${include_directories} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
 
ADD_EXECUTABLE(DragAndDropFiles main.cpp form.cpp ${MOCSrcs} ${UISrcs})
TARGET_LINK_LIBRARIES(DragAndDropFiles ${QT_LIBRARIES})