diff options
Diffstat (limited to 'tests/manual/examples/widgets/itemviews/puzzle/puzzlewidget.h')
-rw-r--r-- | tests/manual/examples/widgets/itemviews/puzzle/puzzlewidget.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/manual/examples/widgets/itemviews/puzzle/puzzlewidget.h b/tests/manual/examples/widgets/itemviews/puzzle/puzzlewidget.h new file mode 100644 index 0000000000..d1c00872ec --- /dev/null +++ b/tests/manual/examples/widgets/itemviews/puzzle/puzzlewidget.h @@ -0,0 +1,56 @@ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#ifndef PUZZLEWIDGET_H +#define PUZZLEWIDGET_H + +#include <QPoint> +#include <QPixmap> +#include <QList> +#include <QWidget> + +QT_BEGIN_NAMESPACE +class QDragEnterEvent; +class QDropEvent; +class QMouseEvent; +QT_END_NAMESPACE + +class PuzzleWidget : public QWidget +{ + Q_OBJECT + +public: + explicit PuzzleWidget(int imageSize, QWidget *parent = nullptr); + void clear(); + + int pieceSize() const; + int imageSize() const; + +signals: + void puzzleCompleted(); + +protected: + void dragEnterEvent(QDragEnterEvent *event) override; + void dragLeaveEvent(QDragLeaveEvent *event) override; + void dragMoveEvent(QDragMoveEvent *event) override; + void dropEvent(QDropEvent *event) override; + void mousePressEvent(QMouseEvent *event) override; + void paintEvent(QPaintEvent *event) override; + +private: + struct Piece { + QPixmap pixmap; + QRect rect; + QPoint location; + }; + + int findPiece(const QRect &pieceRect) const; + const QRect targetSquare(const QPoint &position) const; + + QList<Piece> pieces; + QRect highlightedRect; + int inPlace; + int m_ImageSize; +}; + +#endif // PUZZLEWIDGET_H |