#pragma once #include "lts_widgets_export.h" #include class QRubberBand; namespace LtsWidgets { class LTSWIDGETS_EXPORT LtsPictureView : public QGraphicsView { Q_OBJECT public: explicit LtsPictureView(QWidget *parent = nullptr); ~LtsPictureView(); void hideRubberband(); void newRubberBand(); void cutPicture(); QGraphicsPixmapItem *getImage(); protected: void mousePressEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; private: bool m_mouseActive; bool m_moveable; bool m_aspectRatioEnabled; bool m_s_inEdit; double m_aspectRatio; QRect m_curRectangle; QGraphicsScene *m_gsPicture; QRubberBand *m_rubberband; QGraphicsPixmapItem *m_image; QGraphicsPixmapItem *m_origimage; QPoint m_origin; QPoint m_bandoffset; public slots: void setPicture(const QImage &image, const QPoint &pos, const bool flag); void setAspectRatio(double aspectRatio); void ratioClicked(bool enabled); void leftChanged(int left); void rightChanged(int right); void topChanged(int top); void bottomChanged(int bottom); signals: void mouseMoved(const QRect &); void setLimits(const QSize &, bool); }; }