一、用途说明:
直接拖拽文件到界面,则获取到文件的路径,然后通过文件路径再操作,这里例子是直接打印出了文件路径,如果要打开,注意文件格式,可能是文本、图片、PDF等,所以要进行判断再用相应方式方法打开。
二、实现案例:
1、主要方法:重写下面两个函数
-
void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event);
直接看代码,一看就明白了!
.h文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QDragEnterEvent>
#include <QDropEvent>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
protected:
void dragEnterEvent(QDragEnterEvent *event);
void dropEvent(QDropEvent *event);
private:
Ui::Widget *ui;
QString m_image;
};
#endif // WIDGET_H
.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include <QMimeData>
#include <QUrl>
#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)
{
if(event->mimeData()->hasFormat("text/uri-list"))
{
event->acceptProposedAction();
}
else
{
event->ignore();
}
}
void Widget::dropEvent(QDropEvent *event)
{
QList<QUrl> urls = event->mimeData()->urls();
if(urls.isEmpty())
return ;
for( int i=0; i<urls.length(); i++)
{
qDebug()<<urls.at(i).toLocalFile();
}
}