From 0fefc6168b5d18791709e7fe948ea1770ca20423 Mon Sep 17 00:00:00 2001 From: Anakin Date: Tue, 3 Jan 2017 11:47:27 +0100 Subject: [PATCH] add drag and drop support --- QtMeshViewer/Header/OglViewerWidget.h | 4 ++++ QtMeshViewer/Source/OglViewerWidget.cpp | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/QtMeshViewer/Header/OglViewerWidget.h b/QtMeshViewer/Header/OglViewerWidget.h index ccf64f1..b10ffea 100644 --- a/QtMeshViewer/Header/OglViewerWidget.h +++ b/QtMeshViewer/Header/OglViewerWidget.h @@ -21,6 +21,9 @@ public: explicit OglViewerWidget(QWidget *parent = 0); ~OglViewerWidget(); +signals: + void loadFile(const char*); + private: struct { bool left = false; @@ -40,6 +43,7 @@ protected: void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE; void wheelEvent(QWheelEvent *e) Q_DECL_OVERRIDE; + void dragEnterEvent(QDragEnterEvent *e) Q_DECL_OVERRIDE; void dropEvent(QDropEvent * event) Q_DECL_OVERRIDE; void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE; diff --git a/QtMeshViewer/Source/OglViewerWidget.cpp b/QtMeshViewer/Source/OglViewerWidget.cpp index 4f2fb20..2fe6d84 100644 --- a/QtMeshViewer/Source/OglViewerWidget.cpp +++ b/QtMeshViewer/Source/OglViewerWidget.cpp @@ -93,9 +93,18 @@ void OglViewerWidget::wheelEvent(QWheelEvent *e) update(); } +void OglViewerWidget::dragEnterEvent(QDragEnterEvent *e) +{ + if (e->mimeData()->hasUrls()) + if(e->mimeData()->urls().size() == 1) + if(e->mimeData()->urls().first().toLocalFile().endsWith(".msh")) + e->acceptProposedAction(); + +} + void OglViewerWidget::dropEvent(QDropEvent * e) { - std::cout << e->mimeData()->text().toStdString() << std::endl; + emit loadFile(e->mimeData()->urls().first().toLocalFile().toStdString().c_str()); } void OglViewerWidget::keyPressEvent(QKeyEvent *e) @@ -127,6 +136,7 @@ void OglViewerWidget::initializeGL() m_dataEngine = new GeometryEngine; connect(m_dataEngine, &GeometryEngine::requestResetView, this, &OglViewerWidget::resetView); connect(parentWidget(), SIGNAL(loadFile(const char*)), m_dataEngine, SLOT(loadFile(const char*))); + connect(this, SIGNAL(loadFile(const char*)), m_dataEngine, SLOT(loadFile(const char*))); }