#pragma once #include "ltswidgets_export.h" #include #include namespace LtsWidgets { class LTSWIDGETS_EXPORT LtsImageCropper : public QGraphicsView { Q_OBJECT Q_PROPERTY(QPixmap pixMap READ pixmap WRITE setPixmap) Q_PROPERTY(double multiplier READ multiplier WRITE setMultiplier) Q_PROPERTY(double maxZoom READ maxZoom WRITE setMaxZoom) public: LtsImageCropper(QWidget* parent = nullptr, const QSize& size = {}, const QPixmap& pixmap = {}); ~LtsImageCropper(); void setPixmap(const QPixmap& pixmap); void setImage(const QImage& image); void setMultiplier(double multiplier); void setMaxZoom(double maxZoom) { m_maxScale = maxZoom; } QPixmap pixmap() { return grab(); } QImage image(); double multiplier() const { return m_multiplier; } double maxZoom() const { return m_maxScale; } private: QGraphicsScene* m_scene = nullptr; QGraphicsPixmapItem* m_pixmapItem = nullptr; double m_currentZoom; double m_minScale; double m_maxScale; double m_stepScale; double m_multiplier; void calculateScaleStep(); protected: void wheelEvent(QWheelEvent* event) override; void mousePressEvent(QMouseEvent* event) override; void mouseReleaseEvent(QMouseEvent* event) override; }; } // namespace LtsWidgets