四时宝库

程序员的知识宝库

qt 获取拖动文件的文件名(qt 拖拽文件 并打开)

示例工程:拖动一个文件或者拖动一批文件,获取拖动的文件名。

代码部分

#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)
{

}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接