示例工程:拖动一个文件或者拖动一批文件,获取拖动的文件名。
代码部分
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QDragEnterEvent>
#include <QDragLeaveEvent>
#include <QDragMoveEvent>
#include <QDropEvent>
#include <QString>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
void dragEnterEvent(QDragEnterEvent *e);
void dragLeaveEvent(QDragLeaveEvent *e);
void dragMoveEvent(QDragMoveEvent *e);
void dropEvent(QDropEvent *e);
void readFile(const QString &fileName);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QFileInfo>
#include <QMimeData>
#include <QList>
#include <QUrl>
#include <QFileIconProvider>
#include <QIcon>
#include <QPixmap>
#include <QtGlobal>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
setAcceptDrops(true);
QFileInfo fileinfo("d:\\1.lnk");
QString pro = fileinfo.canonicalFilePath();
ui->textEdit->setPlainText(pro);
QFileInfo fi("D:\\alantop_dir\\alantop_program\\qq\\Bin\\QQScLauncher.exe");
qDebug() << fi.filePath();
QFileIconProvider icon_provider;
QIcon icon = icon_provider.icon(fi);
QPixmap pixmap = icon.pixmap(48,48);
pixmap.save("d:\\1.png", "png");
ui->textEdit->setAcceptDrops(false);
setAcceptDrops(true);
}
Widget::~Widget()
{
delete ui;
}
void Widget::dragEnterEvent(QDragEnterEvent *e)
{
//if (e->mimeData()->hasFormat("text/uri-list"))
// e->acceptProposedAction();
QString path = e->mimeData()->text();
ui->textEdit->setPlainText(path);
//e->accept();
e->acceptProposedAction();
}
void Widget::dragLeaveEvent(QDragLeaveEvent *e)
{
}
void Widget::dragMoveEvent(QDragMoveEvent *e)
{
}
void Widget::dropEvent(QDropEvent *e)
{
QList<QUrl> urls = e->mimeData()->urls();
if (urls.isEmpty())
return;
qDebug() << urls.size();
foreach(QUrl u , urls)
{
QString filepath = u.toLocalFile();
}
}
void Widget::readFile(const QString &fileName)
{
}