QT_GUI_IM_5_4 - 8BitsCoding/RobotMentor GitHub Wiki

목차


widget.h

#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

widget.cpp

#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"));
}
⚠️ **GitHub.com Fallback** ⚠️