#pragma once #include "lts_widgets_export.h" #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; }; }