简要说明:
将图片拖进label显示。
在dragEvent 函数中获取文件的路径,通过pixmap加载,调整label大小,显示图片。
头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QDragEnterEvent>
#include<QDropEvent>
#include<QList>
#include<QMimedata>
#include<QPixmap>
#include<QLabel>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
QLabel *label1;
QPixmap px;
protected:
void dragEnterEvent(QDragEnterEvent* event);
void dropEvent(QDropEvent *event);
};
#endif // WIDGET_H
cpp文件
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
this->resize(800,600);
this->setAcceptDrops(true);
label1=new QLabel(this);
label1->setGeometry(10,10,100,100);
}
Widget::~Widget() {}
void Widget::dragEnterEvent(QDragEnterEvent *event)
{
if(event->mimeData()->hasUrls())
{
event->acceptProposedAction();
}
}
void Widget::dropEvent(QDropEvent *event)
{
QList<QUrl> urldr;
bool bool1,bool2;
QString str1;
QSize size1;
if(event->mimeData()->hasUrls())
{
urldr= event->mimeData()->urls();
bool1=urldr.isEmpty();
if(bool1==true)
{
qDebug()<<"urldr do not exits!";
return ;
}
str1 = urldr.first().toLocalFile();
px.load(str1);
bool2=px.isNull();
if(bool2==true)
{
qDebug()<<"failed to load pictrue!";
return ;
}
size1=QSize(px.width(),px.height());
label1->resize(size1);
label1->setPixmap(px);
}
}