#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
// QWidget interface
protected:
void dragEnterEvent(QDragEnterEvent *event) override;
void dragMoveEvent(QDragMoveEvent *event) override;
void dragLeaveEvent(QDragLeaveEvent *event) override;
void dropEvent(QDropEvent *event) override;
private:
bool isImage(QString fullpath);
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QDragEnterEvent>
#include <QDragMoveEvent>
#include <QDragLeaveEvent>
#include <QDropEvent>
#include <QFileInfo>
#include <QMimeData>
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setAcceptDrops(true);
}
Widget::~Widget()
{
delete ui;
}
void Widget::dragEnterEvent(QDragEnterEvent *event)
{
event->accept();
}
void Widget::dragMoveEvent(QDragMoveEvent *event)
{
event->accept();
}
void Widget::dragLeaveEvent(QDragLeaveEvent *event)
{
event->accept();
}
void Widget::dropEvent(QDropEvent *event)
{
if(event->mimeData()->hasUrls()){
QList<QUrl> urls = event->mimeData()->urls();
if(urls.count() > 1)
return;
QFileInfo file(urls.at(0).toLocalFile());
QPixmap mPixmap;
if(isImage(file.absoluteFilePath()) && (mPixmap.load(file.absoluteFilePath()))){
ui->label->setPixmap(mPixmap.scaled(ui->label->size())) ;
}
}
}
bool Widget::isImage(QString fullpath)
{
QFileInfo file(fullpath);
return ((file.suffix()=="png") ||
(file.suffix() =="PNG") ||
(file.suffix() == "jpg") ||
(file.suffix() =="JPG")||
(file.suffix() == "jpeg") ||
(file.suffix() =="JPeG"));
}