WaferGraphicsView.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. /**绘制矩阵
  19. */
  20. void drawDieMatrix(const QPointF& center,
  21. int Width, int Height,int DieMatrixId);
  22. void setCViewInterface(ns_module::CViewInterface* CViewInterface);
  23. QPixmap convertToPixmap(const ImageInfo& imgData);
  24. void yuv422_to_rgb888(const unsigned char* src, unsigned char* dst, int width, int height);
  25. protected:
  26. void mousePressEvent(QMouseEvent* event) override;
  27. void mouseMoveEvent(QMouseEvent* event) override;
  28. void mouseReleaseEvent(QMouseEvent* event) override;
  29. void wheelEvent(QWheelEvent* event) override;
  30. bool eventFilter(QObject *obj, QEvent *event) override;
  31. private:
  32. bool selecting; // 是否正在框选
  33. QPoint lastPos;
  34. QPointF selectionStart; // 框选起点
  35. QGraphicsRectItem* selectionRect; // 框选矩形
  36. double scaleFactor; // 当前缩放比例
  37. bool isDragging = false;
  38. QMap<QPair<int, int>, QGraphicsItem*> selectedItemsMap;
  39. QLabel *thumbnailLabel; // 缩略图标签
  40. bool thumbnailVisible; // 缩略图可见状态
  41. QPair<int, int> topLeftIndex;
  42. QPair<int, int> bottomRightIndex;
  43. QPointer<DieItem> selectedItem;
  44. QPointer<DieItem> topLeftItem;
  45. QPointer<DieItem> bottomRightItem;
  46. QPointF m_center;
  47. double m_radius;
  48. QSize m_dieSize;
  49. QHash<UINT, DieItem*> m_dieItems; // 通过ID快速访问
  50. ns_module::CViewInterface* m_pCViewInterface;
  51. void showThumbnail();
  52. void hideThumbnail();
  53. void checkAndCreateRegion();
  54. void clearRegion();
  55. void setRegion();
  56. public:
  57. /**场景
  58. */
  59. QGraphicsScene* m_scene = nullptr;
  60. };
  61. #endif // WAFERGRAPHICSVIEW_H