WaferGraphicsView.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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);
  17. void addDiePoint(const QPointF& diePos,const WAFER_MATRIX_POINT_INFO_STRUCT& dieInfo);
  18. void drawDieMatrix(const QPointF& center,
  19. int Width, int Height);
  20. protected:
  21. void mousePressEvent(QMouseEvent* event) override;
  22. void mouseMoveEvent(QMouseEvent* event) override;
  23. void mouseReleaseEvent(QMouseEvent* event) override;
  24. void wheelEvent(QWheelEvent* event) override;
  25. bool eventFilter(QObject *obj, QEvent *event) override;
  26. private:
  27. bool selecting; // 是否正在框选
  28. QPoint lastPos;
  29. QPointF selectionStart; // 框选起点
  30. QGraphicsRectItem* selectionRect; // 框选矩形
  31. double scaleFactor; // 当前缩放比例
  32. bool isDragging = false;
  33. QMap<QPair<int, int>, QGraphicsItem*> selectedItemsMap;
  34. QLabel *thumbnailLabel; // 缩略图标签
  35. bool thumbnailVisible; // 缩略图可见状态
  36. QPair<int, int> topLeftIndex;
  37. QPair<int, int> bottomRightIndex;
  38. QPointer<DieItem> selectedItem;
  39. QPointer<DieItem> topLeftItem;
  40. QPointer<DieItem> bottomRightItem;
  41. QGraphicsScene* m_scene;
  42. QPointF m_center;
  43. double m_radius;
  44. QSize m_dieSize;
  45. QHash<UINT, DieItem*> m_dieItems; // 通过ID快速访问
  46. void showThumbnail();
  47. void hideThumbnail();
  48. void checkAndCreateRegion();
  49. void clearRegion();
  50. void setRegion();
  51. };
  52. #endif // WAFERGRAPHICSVIEW_H