BondMatrixProgramPage.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #pragma once
  2. #include <QWidget>
  3. #include "ui_BondMatrixProgramPage.h"
  4. #include "CViewInterface.h"
  5. #include "CModule.h"
  6. #include <QGroupBox>
  7. #include <QLineEdit>
  8. #include <QLabel>
  9. #include <QPushButton>
  10. #include <QHBoxLayout>
  11. #include <QVBoxLayout>
  12. #include <algorithm>
  13. class BondMatrixProgramPage : public QWidget
  14. {
  15. Q_OBJECT
  16. public:
  17. BondMatrixProgramPage(QWidget* parent = nullptr);
  18. ~BondMatrixProgramPage();
  19. private:
  20. //新增矩阵界面
  21. //void AddMatrixPage(int bondMatrixVectorIndex, int vectorIndex, PROGRAM_POINT_MATRIX_STRUCT matrixData);
  22. void AddMatrixPage(int vectorIndex, int subVectorIndex, PROGRAM_POINT_MATRIX_STRUCT matrixData, QGridLayout* layout);
  23. void AddOutMatrixPage(int vectorIndex, PROGRAM_BOND_MATRIX_STRUCT matrixData, std::vector<PROGRAM_POINT_MATRIX_STRUCT> vecSubMatrix);
  24. //void AddOutMatrixPage(int vectorIndex, PROGRAM_BOND_MATRIX_STRUCT matrixData);
  25. XY_DOUBLE_STRUCT BondGetAxisPosition(std::string ModuleType, XY_DOUBLE_STRUCT& pos);
  26. //往后端新增矩阵数据
  27. void AddMatrixParam();
  28. //更新参数,根据选择的点更新界面参数显示
  29. void UpdatePageParam();
  30. //参数被修改后发送给后端
  31. void ParamChangeEvent();
  32. //参数被修改后发送给后端
  33. void MatrixChangeEvent();
  34. //更新取晶参数
  35. void UpdatePagePickParam();
  36. //更新固晶参数
  37. void UpdatePageBondParam();
  38. void initPage();
  39. protected:
  40. bool eventFilter(QObject* watched, QEvent* event) override;
  41. private slots:
  42. void onNoBondPtsClicked(QLineEdit* lineEdit, int index, int parentIndex);
  43. private:
  44. Ui::BondMatrixProgramPageClass ui;
  45. CManageDB* m_manageDB = nullptr;
  46. CProduct* m_pProduct = nullptr;
  47. //当前界面显示的参数
  48. ns_db::BOND_INFO_STRUCT m_curBondInfo;
  49. ns_db::PICKBOND_PARAM_STRUCT m_curWaferPickParam;
  50. ns_db::PICKBOND_PARAM_STRUCT m_curCalibPlaceParam;
  51. ns_db::PICKBOND_PARAM_STRUCT m_curCalibPickParam;
  52. ns_db::PICKBOND_PARAM_STRUCT m_curBondParam;
  53. ns_mat::POINT_INFO_STRUCT m_curPointInfo;
  54. ns_module::CViewInterface* m_pProgramCViewInterface = nullptr;
  55. std::vector<ns_db::PICKBOND_PARAM_STRUCT> m_vecParam;
  56. std::vector<ns_db::PROGRAM_BOND_MATRIX_STRUCT> m_vectBondMatrixs;
  57. std::vector<ns_db::PROGRAM_POINT_MATRIX_STRUCT> m_vecSubMatrixs;
  58. //子矩阵控件,ID从1开始
  59. QMap<int, QVector<QObject*>> m_mapSubMatrixControls;
  60. int m_curPtIndex = 0;
  61. // 新增字段: 用于管理大矩阵与子矩阵的关系
  62. //QMap<int, std::vector<int>> m_mapBondMatrixToSubMatrices; // 大矩阵ID和对应子矩阵ID的映射
  63. QMap<int, std::vector<ns_db::PROGRAM_POINT_MATRIX_STRUCT>> m_mapBondMatrixToSubMatrices; // 大矩阵ID和对应子矩阵ID的映射
  64. // 用于标识当前矩阵类型(如大矩阵或子矩阵)
  65. bool m_isSubMatrix = false; // 标记是否为子矩阵
  66. QMap<QWidget*, int> m_mapSubWidgetIndex;
  67. QMap<QWidget*, int> m_mapOutWidgetIndex;
  68. };