ImageView.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #ifndef IMAGEVIEW_H
  2. #define IMAGEVIEW_H
  3. #include <QWidget>
  4. #include <QPixmap>
  5. #include <QMouseEvent>
  6. #include <QGraphicsView>
  7. #include "CameraMaterialGroupWnd/MaterialWindow/DraggableLine.h"
  8. #include <QRubberBand>
  9. class ImageView : public QGraphicsView
  10. {
  11. Q_OBJECT
  12. public:
  13. explicit ImageView(QWidget* parent = nullptr);
  14. ~ImageView();
  15. //设置图片
  16. void setPixmap(const QPixmap& pixmap);
  17. void setCurPixmap(const QPixmap& pixmap);
  18. //设置标尺
  19. void addRuler();
  20. void cancelRuler();
  21. void setIsDrawing(bool drawing) { m_isDrawing = drawing; }
  22. protected:
  23. void paintEvent(QPaintEvent* event) override;
  24. void mousePressEvent(QMouseEvent* event) override;
  25. void mouseMoveEvent(QMouseEvent* event) override;
  26. void mouseReleaseEvent(QMouseEvent* event) override;
  27. void wheelEvent(QWheelEvent* event) override;
  28. void resizeEvent(QResizeEvent* event) override;
  29. void scrollContentsBy(int dx, int dy) override;
  30. private:
  31. void drawCrosshair(QPainter& painter);
  32. private:
  33. QGraphicsPixmapItem* m_pixmapItem;
  34. QPixmap m_pixmap;
  35. QPoint m_lastMousePos; // 上一次鼠标的位置
  36. QPointF m_imageOffset; // 图片的偏移量
  37. RulerLineItem* m_pRuleLine;
  38. QList<RulerLineItem*> m_pRuleLines;
  39. bool m_bMouseTranslate;
  40. qreal m_minScale;
  41. bool m_isDrawing;
  42. bool m_curDrawing;
  43. QPainterPath m_currentPath;
  44. QGraphicsPathItem* m_currentPathItem;
  45. QList<QGraphicsPathItem*> m_drawnPaths;
  46. QPoint m_rightClickPressPos;
  47. bool m_rightButtonPressed;
  48. //标尺
  49. bool m_isCreating;
  50. QPointF m_startPos;
  51. QGraphicsLineItem* m_pTempLine = nullptr;
  52. bool m_bRulerState;
  53. void saveImage();
  54. void clearDrawnLines();
  55. };
  56. #endif // IMAGEVIEW_H