From 42a09e95fd93f344a1c96ecbf24f4234a5549be5 Mon Sep 17 00:00:00 2001 From: lixueman Date: Mon, 21 Nov 2022 09:01:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=A7=8B=E8=8F=9C=E5=8D=95=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E5=88=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=8B=96=E6=8B=BD?= =?UTF-8?q?=E5=88=B0=E4=BB=BB=E5=8A=A1=E6=A0=8F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/UserInterface/ListView/listview.cpp | 32 +++++++++++++++++++++++++ src/UserInterface/ListView/listview.h | 3 +++ 2 files changed, 35 insertions(+) diff --git a/src/UserInterface/ListView/listview.cpp b/src/UserInterface/ListView/listview.cpp index 89be87b..3ec9cd7 100755 --- a/src/UserInterface/ListView/listview.cpp +++ b/src/UserInterface/ListView/listview.cpp @@ -18,9 +18,11 @@ #include "listview.h" #include "function_button_widget.h" #include "utility.h" +#include "thumbnail.h" #include #include #include +#include ListView::ListView(QWidget *parent/*, int width, int height, int module*/): KListView(parent) @@ -29,6 +31,7 @@ ListView::ListView(QWidget *parent/*, int width, int height, int module*/): this->h = 540; this->module = 1; initWidget(); + setDragEnabled(true); setAttribute(Qt::WA_AcceptTouchEvents); m_listmodel = new QStandardItemModel(this); this->setModel(m_listmodel); @@ -47,6 +50,7 @@ ListView::~ListView() void ListView::initWidget() { setAttribute(Qt::WA_TranslucentBackground); + this->setAcceptDrops(true); viewport()->setAttribute(Qt::WA_TranslucentBackground); viewport()->setAutoFillBackground(false); this->setSelectionMode(QAbstractItemView::SingleSelection); @@ -70,6 +74,34 @@ void ListView::initWidget() connect(this, &ListView::clicked, this, &ListView::onClicked); } +void ListView::mouseMoveEvent(QMouseEvent *e) +{ + if (e->buttons() & Qt::LeftButton) { + if ((e->pos() - m_pressPos).manhattanLength() >= QApplication::startDragDistance()) { + myDebug() << "进入拖拽事件"; + QString desktopfp = m_pressApp.value().at(0); + QMimeData *mimeData = new QMimeData; + ThumbNail *dragImage = new ThumbNail; + QDrag *drag = new QDrag(this); + QList desktopUrlList; + desktopUrlList.append(QUrl(desktopfp)); + myDebug() << desktopUrlList; + mimeData->setUrls(desktopUrlList); + //设置拖拽时的缩略图 + dragImage->setupthumbnail(desktopfp); + QPixmap pixmap = dragImage->grab(); + pixmap = pixmap.scaled(QSize(32, 32), Qt::KeepAspectRatio); + myDebug() << mimeData; + drag->setMimeData(mimeData); + drag->setPixmap(pixmap); + drag->setHotSpot(QPoint(pixmap.width(), pixmap.height())); + drag->exec(Qt::MoveAction); + delete dragImage; + dragImage = nullptr; + } + } +} + void ListView::addData(QVector data, int module) { this->module = module; diff --git a/src/UserInterface/ListView/listview.h b/src/UserInterface/ListView/listview.h index f9125e8..6a26210 100755 --- a/src/UserInterface/ListView/listview.h +++ b/src/UserInterface/ListView/listview.h @@ -50,11 +50,14 @@ protected: void paintEvent(QPaintEvent *e) override; void keyPressEvent(QKeyEvent *e); bool event(QEvent *e); + void mouseMoveEvent(QMouseEvent *e); + private: int w = 0; int h = 0; int m_preRowCount; bool m_scrollbarState = true; + QPoint m_pressPos; private Q_SLOTS: