WaferGraphicsView.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #ifndef WAFERGRAPHICSVIEW_H
  2. #define WAFERGRAPHICSVIEW_H
  3. #include <QGraphicsView>
  4. #include <QGraphicsScene>
  5. #include <QGraphicsRectItem>
  6. #include <QMouseEvent>
  7. #include "DieItem.h"
  8. #include <QLabel>
  9. #include <QPointer>
  10. #include <CViewInterface.h>
  11. class WaferGraphicsView : public QGraphicsView {
  12. Q_OBJECT
  13. public:
  14. WaferGraphicsView(QGraphicsScene* scene, QWidget* parent = nullptr);
  15. void initWafer(const QPointF& center, double radius,
  16. int dieWidth, int dieHeight,double angle);
  17. void addDiePoint(const QPointF& diePos,const WAFER_MATRIX_POINT_INFO_STRUCT& dieInfo);
  18. void drawDieMatrix(const QPointF& center,
  19. int Width, int Height,int DieMatrixId);
  20. void setCViewInterface(ns_module::CViewInterface* CViewInterface);
  21. QPixmap convertToPixmap(const ImageInfo& imgData);
  22. void yuv422_to_rgb888(const unsigned char* src, unsigned char* dst, int width, int height);
  23. protected:
  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. bool eventFilter(QObject *obj, QEvent *event) override;
  29. private:
  30. bool selecting; // 是否正在框选
  31. QPoint lastPos;
  32. QPointF selectionStart; // 框选起点
  33. QGraphicsRectItem* selectionRect; // 框选矩形
  34. double scaleFactor; // 当前缩放比例
  35. bool isDragging = false;
  36. QMap<QPair<int, int>, QGraphicsItem*> selectedItemsMap;
  37. QLabel *thumbnailLabel; // 缩略图标签
  38. bool thumbnailVisible; // 缩略图可见状态
  39. QPair<int, int> topLeftIndex;
  40. QPair<int, int> bottomRightIndex;
  41. QPointer<DieItem> selectedItem;
  42. QPointer<DieItem> topLeftItem;
  43. QPointer<DieItem> bottomRightItem;
  44. QGraphicsScene* m_scene;
  45. QPointF m_center;
  46. double m_radius;
  47. QSize m_dieSize;
  48. QHash<UINT, DieItem*> m_dieItems; // 通过ID快速访问
  49. ns_module::CViewInterface* m_pCViewInterface;
  50. void showThumbnail();
  51. void hideThumbnail();
  52. void checkAndCreateRegion();
  53. void clearRegion();
  54. void setRegion();
  55. };
  56. #endif // WAFERGRAPHICSVIEW_H