#pragma once #include #include #include #include #include "lp_qt_utils.h" class LP_QT_UTILS_EXPORT DefectCardViewer : public QGraphicsView { Q_OBJECT public: DefectCardViewer(QGraphicsScene *scene, QWidget *parent = 0); DefectCardViewer(QWidget *parent = 0); virtual ~DefectCardViewer(); QGraphicsPixmapItem* setImage(QImage& img); void fitInWindow(); signals: void sigScaled(qreal scale); protected: virtual void wheelEvent(QWheelEvent *evt) override; virtual void closeEvent(QCloseEvent *evt) override; virtual void mousePressEvent(QMouseEvent *evt) override; virtual void mouseMoveEvent(QMouseEvent *evt) override; virtual void mouseReleaseEvent(QMouseEvent *evt) override; virtual void drawForeground(QPainter *painter, const QRectF &rt) override; private: void init(); void scaleImage(qreal scale); private: QGraphicsPixmapItem* img_item_ptr_{ nullptr }; QSize origin_img_size_; QImage* img_ptr_{ nullptr }; qreal scale_{ 1.0 }; QGraphicsLineItem *scale_line_ptr_{ nullptr }; QPointF scale_line_scene_pos1_; QPointF scale_line_scene_pos2_; };