ImageView.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. void setoriginalCurPixmap(const QPixmap& pixmap);
  19. //设置标尺
  20. void addRuler();
  21. void cancelRuler();
  22. void setIsDrawing(bool drawing) { m_isDrawing = drawing; }
  23. protected:
  24. void paintEvent(QPaintEvent* event) override;
  25. void mousePressEvent(QMouseEvent* event) override;
  26. void mouseMoveEvent(QMouseEvent* event) override;
  27. void mouseReleaseEvent(QMouseEvent* event) override;
  28. void wheelEvent(QWheelEvent* event) override;
  29. void resizeEvent(QResizeEvent* event) override;
  30. void scrollContentsBy(int dx, int dy) override;
  31. private:
  32. void drawCrosshair(QPainter& painter);
  33. private:
  34. QGraphicsPixmapItem* m_pixmapItem;
  35. QPixmap m_pixmap;
  36. /*保存一张原始图像
  37. * 这个地方目前就是给保存图像使用,后续给其他人用
  38. */
  39. QPixmap m_pixsetOriginalCurPixmapmap;
  40. QPoint m_lastMousePos; // 上一次鼠标的位置
  41. QPointF m_imageOffset; // 图片的偏移量
  42. RulerLineItem* m_pRuleLine;
  43. QList<RulerLineItem*> m_pRuleLines;
  44. bool m_bMouseTranslate;
  45. qreal m_minScale;
  46. bool m_isDrawing;
  47. bool m_curDrawing;
  48. QPainterPath m_currentPath;
  49. QGraphicsPathItem* m_currentPathItem;
  50. QList<QGraphicsPathItem*> m_drawnPaths;
  51. QPoint m_rightClickPressPos;
  52. bool m_rightButtonPressed;
  53. //标尺
  54. bool m_isCreating;
  55. QPointF m_startPos;
  56. QGraphicsLineItem* m_pTempLine = nullptr;
  57. bool m_bRulerState;
  58. void saveImage();
  59. void clearDrawnLines();
  60. void clearRulerLines();
  61. };
  62. #endif // IMAGEVIEW_H