diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2023-06-26 13:48:57 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2023-06-28 00:09:58 +0200 |
commit | cefb1c9ca9af73999247678907c496c1a143d00f (patch) | |
tree | 9d77b10e151289ffd862f6ef7f42dfc510be0611 /examples/widgets/draganddrop/puzzle/pieceslist.cpp | |
parent | 3a9526468c134b68b64b9a3bb6278d47c266e381 (diff) |
Move drag and drop puzzle example to manual test
Pick-to: 6.5 6.6
Change-Id: I859cdb2cf74cd6272c29924c77dab26b4f4c0b6c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'examples/widgets/draganddrop/puzzle/pieceslist.cpp')
-rw-r--r-- | examples/widgets/draganddrop/puzzle/pieceslist.cpp | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/examples/widgets/draganddrop/puzzle/pieceslist.cpp b/examples/widgets/draganddrop/puzzle/pieceslist.cpp deleted file mode 100644 index 0c7e771e42..0000000000 --- a/examples/widgets/draganddrop/puzzle/pieceslist.cpp +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include "pieceslist.h" - -#include <QDrag> -#include <QDragEnterEvent> -#include <QMimeData> - -PiecesList::PiecesList(int pieceSize, QWidget *parent) - : QListWidget(parent), m_PieceSize(pieceSize) -{ - setDragEnabled(true); - setViewMode(QListView::IconMode); - setIconSize(QSize(m_PieceSize, m_PieceSize)); - setSpacing(10); - setAcceptDrops(true); - setDropIndicatorShown(true); -} - -void PiecesList::dragEnterEvent(QDragEnterEvent *event) -{ - if (event->mimeData()->hasFormat(PiecesList::puzzleMimeType())) - event->accept(); - else - event->ignore(); -} - -void PiecesList::dragMoveEvent(QDragMoveEvent *event) -{ - if (event->mimeData()->hasFormat(PiecesList::puzzleMimeType())) { - event->setDropAction(Qt::MoveAction); - event->accept(); - } else { - event->ignore(); - } -} - -void PiecesList::dropEvent(QDropEvent *event) -{ - if (event->mimeData()->hasFormat(PiecesList::puzzleMimeType())) { - QByteArray pieceData = event->mimeData()->data(PiecesList::puzzleMimeType()); - QDataStream dataStream(&pieceData, QIODevice::ReadOnly); - QPixmap pixmap; - QPoint location; - dataStream >> pixmap >> location; - - addPiece(pixmap, location); - - event->setDropAction(Qt::MoveAction); - event->accept(); - } else { - event->ignore(); - } -} - -void PiecesList::addPiece(const QPixmap &pixmap, const QPoint &location) -{ - QListWidgetItem *pieceItem = new QListWidgetItem(this); - pieceItem->setIcon(QIcon(pixmap)); - pieceItem->setData(Qt::UserRole, QVariant(pixmap)); - pieceItem->setData(Qt::UserRole+1, location); - pieceItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled); -} - -void PiecesList::startDrag(Qt::DropActions /*supportedActions*/) -{ - QListWidgetItem *item = currentItem(); - - QByteArray itemData; - QDataStream dataStream(&itemData, QIODevice::WriteOnly); - QPixmap pixmap = qvariant_cast<QPixmap>(item->data(Qt::UserRole)); - QPoint location = item->data(Qt::UserRole+1).toPoint(); - - dataStream << pixmap << location; - - QMimeData *mimeData = new QMimeData; - mimeData->setData(PiecesList::puzzleMimeType(), itemData); - - QDrag *drag = new QDrag(this); - drag->setMimeData(mimeData); - drag->setHotSpot(QPoint(pixmap.width()/2, pixmap.height()/2)); - drag->setPixmap(pixmap); - - if (drag->exec(Qt::MoveAction) == Qt::MoveAction) - delete takeItem(row(item)); -} |