#pragma once #include #include "ui_BondMatrixProgramPage.h" #include "CViewInterface.h" #include "CModule.h" #include #include #include #include #include #include #include class BondMatrixProgramPage : public QWidget { Q_OBJECT public: BondMatrixProgramPage(QWidget* parent = nullptr); ~BondMatrixProgramPage(); private: //新增矩阵界面 //void AddMatrixPage(int bondMatrixVectorIndex, int vectorIndex, PROGRAM_POINT_MATRIX_STRUCT matrixData); void AddMatrixPage(int vectorIndex, int subVectorIndex, PROGRAM_POINT_MATRIX_STRUCT matrixData, QGridLayout* layout); void AddOutMatrixPage(int vectorIndex, PROGRAM_BOND_MATRIX_STRUCT matrixData, std::vector vecSubMatrix); //void AddOutMatrixPage(int vectorIndex, PROGRAM_BOND_MATRIX_STRUCT matrixData); XY_DOUBLE_STRUCT BondGetAxisPosition(std::string ModuleType, XY_DOUBLE_STRUCT& pos); XY_DOUBLE_STRUCT BondMoveToXYAxisPosition(std::string ModuleType, XY_DOUBLE_STRUCT& pos); //往后端新增矩阵数据 void AddMatrixParam(); //更新参数,根据选择的点更新界面参数显示 void UpdatePageParam(); //更新取/固晶参数,根据选择的点更新界面参数显示 void UpdatePagePickPlaceParam(); //参数被修改后发送给后端 void ParamChangeEvent(); int BondInfoParamSaveAsEvent(); int ParamSaveAsEvent(ns_db::PICKBOND_PARAM_STRUCT &m_curWaferPickParam); //参数被修改后发送给后端 void MatrixChangeEvent(); //更新取晶参数 void UpdatePagePick1Param(); void UpdatePagePick2Param(); //更新固晶参数 void UpdatePageBond1Param(); void UpdatePageBond2Param(); void initPage(); // 同步相同 iId 的参数 void syncParamWithSameId(ns_db::PICKBOND_PARAM_STRUCT& currentParam, ns_db::PICKBOND_PARAM_STRUCT& targetParam, QWidget* targetWidget); // 初始化取晶控件连接 void connectWaferPickControls(); // 华夫盒取晶 void connectCalibPickControls(); // 中转台取晶 // 初始化放晶控件连接 void connectCalibPlaceControls(); void connectBondControls(); void ShowCurrentMatrix(int bondMatrixId); bool canDeleteBondInfo(int selectedBondInfoId); void updateDeleteButtonStatus(bool canDelete, QPushButton* deleteButton); void updateFourParamDeleteButtonStatus(); int canDeleteParameter(int selectedId); bool deleteParameter(QPushButton* deleteButton, int selectedId); void restoreBondInfoDefaultStyles(); void restorePick1DefaultStyles(); void restorePick2DefaultStyles(); void restorePlace1DefaultStyles(); void restorePlccle2DefaultStyles(); protected: bool eventFilter(QObject* watched, QEvent* event) override; private slots: void onNoBondPtsClicked(QLineEdit* lineEdit, int index, int parentIndex); void UpdateShowBondInfoData(UINT iInfoId); void onComboBoxCurrentMatrixChanged(int index); // 切换矩阵 void onComboBoxIndexChangedForMatrixParam(int index); void onComboBoxIndexChangedForParam(int index); void onComboBoxPopupBondInfo(QComboBox* comboBox); //DeleteBondInfo void onPushButtonDeleteParamClicked(); //DeleteParam void onPushButtonDeleteClicked(QPushButton* deleteButton, QComboBox* comboBox);//通用 /*void on_pushButtonDeletePick1_clicked(QPushButton* deleteButton, QComboBox* comboBox); void on_pushButtonDeletePick2_clicked(QPushButton* deleteButton, QComboBox* comboBox); void on_pushButtonDeletePlace1_clicked(QPushButton* deleteButton, QComboBox* comboBox); void on_pushButtonDeletePlace2_clicked(QPushButton* deleteButton, QComboBox* comboBox);*/ //ModifyParam void onSetParamPickTempClicked(); void onSetParamPreBondClicked(); void onSetParamPostBondClicked(); void onSetParamBondClicked(); void onSetParamLookUpClicked(); void onSetParamCalibPickClicked(); void onSetParamPcbAlnPRStrategyClicked(); //CreateParam void onCreateParamPickTempClicked(); void onCreateParamPreBondClicked(); void onCreateParamPostBondClicked(); void onCreateParamBondClicked(); void onCreateParamLookUpClicked(); void onCreateParamCalibPickClicked(); void onCreatParamPcbAlnPRStrategyClicked(); // ——— 取晶槽函数 ——— // 取晶头取晶 void onCheckBoxPickBlockCheckClicked(bool); void onCheckBoxPickLoseCheckClicked(bool); void onCheckBoxPickFindForceCheckClicked(bool); void onDoubleSpinBoxPrePickZEditingFinished(); void onDoubleSpinBoxPickForceEditingFinished(); void onDoubleSpinBoxPickPosZEditingFinished(); void onSpinBoxPickGrabDelayEditingFinished(); void onSpinBoxPickDelayEditingFinished(); void onSpinBoxPickBlockCheckDelayEditingFinished(); void onSpinBoxPickVacDelayEditingFinished(); void onSpinBoxPickBlowDelayEditingFinished(); // 中转台取晶 void onCheckBoxPickBlockCheck_2Clicked(bool); void onCheckBoxPickLoseCheck_2Clicked(bool); void onCheckBoxPickFindForceCheck_2Clicked(bool); void onDoubleSpinBoxPrePickZ_2EditingFinished(); void onDoubleSpinBoxPickForce_2EditingFinished(); void onDoubleSpinBoxPickPosZ_2EditingFinished(); void onSpinBoxPickGrabDelay_2EditingFinished(); void onSpinBoxPickDelay_2EditingFinished(); void onSpinBoxPickBlockCheckDelay_2EditingFinished(); void onSpinBoxPickVacDelay_2EditingFinished(); void onSpinBoxPickBlowDelay_2EditingFinished(); // "中转台放晶" 控件的槽函数 void onCheckBoxBondBlockCheckClicked(bool isChecked); void onCheckBoxBondLoseCheckClicked(bool isChecked); void onCheckBoxBondFindForceClicked(bool isChecked); void onDoubleSpinBoxPreBondPosZEditingFinished(); void onDoubleSpinBoxBondForceEditingFinished(); void onDoubleSpinBoxBondPosZEditingFinished(); void onSpinBoxBondGrabDelayEditingFinished(); void onSpinBoxBondBlockCheckDelayEditingFinished(); void onSpinBoxBondDelayEditingFinished(); void onSpinBoxBondVacDelayEditingFinished(); void onSpinBoxBondBlowDelayEditingFinished(); // "固晶台固晶" 控件的槽函数 void onCheckBoxBondBlockCheck_2Clicked(bool isChecked); void onCheckBoxBondLoseCheck_2Clicked(bool isChecked); void onCheckBoxBondFindForce_2Clicked(bool isChecked); void onDoubleSpinBoxPreBondPosZ_2EditingFinished(); void onDoubleSpinBoxBondForce_2EditingFinished(); void onDoubleSpinBoxBondPosZ_2EditingFinished(); void onSpinBoxBondGrabDelay_2EditingFinished(); void onSpinBoxBondBlockCheckDelay_2EditingFinished(); void onSpinBoxBondDelay_2EditingFinished(); void onSpinBoxBondVacDelay_2EditingFinished(); void onSpinBoxBondBlowDelay_2EditingFinished(); private: Ui::BondMatrixProgramPageClass ui; CManageDB* m_manageDB = nullptr; CProduct* m_pProduct = nullptr; ns_mat::TipMatrix* m_TipMatrix = nullptr; std::vector m_vecPrStrategy; std::vector m_vecPrTemplate; std::vector m_vecPrBondInsp; vector m_vecNozzles; //当前界面显示的参数 ns_db::BOND_INFO_STRUCT m_curBondInfo; ns_db::BOND_INFO_STRUCT m_tempBondInfo; ns_db::PICKBOND_PARAM_STRUCT m_curWaferPickParam;//取晶头取晶 ns_db::PICKBOND_PARAM_STRUCT m_curCalibPlaceParam;//中转台固晶 ns_db::PICKBOND_PARAM_STRUCT m_curCalibPickParam;//中转台取晶 ns_db::PICKBOND_PARAM_STRUCT m_curBondParam;//固晶台固晶 ns_db::PICKBOND_PARAM_STRUCT m_tempWaferPickParam;//取晶头取晶 ns_db::PICKBOND_PARAM_STRUCT m_tempCalibPlaceParam;//中转台固晶 ns_db::PICKBOND_PARAM_STRUCT m_tempCalibPickParam;//中转台取晶 ns_db::PICKBOND_PARAM_STRUCT m_tempBondParam;//固晶台固晶 ns_mat::POINT_INFO_STRUCT m_curPointInfo; ns_module::CViewInterface* m_pProgramCViewInterface = nullptr; std::vector m_vecParam; std::vector m_vectBondMatrixs; std::vector m_vecSubMatrixs; std::vector m_vecBondInfoData; //子矩阵控件,ID从1开始 QMap> m_mapSubMatrixControls; int m_curPtIndex = 0; // 新增字段: 用于管理大矩阵与子矩阵的关系 //QMap> m_mapBondMatrixToSubMatrices; // 大矩阵ID和对应子矩阵ID的映射 QMap> m_mapBondMatrixToSubMatrices; // 大矩阵ID和对应子矩阵ID的映射 // 用于标识当前矩阵类型(如大矩阵或子矩阵) bool m_isSubMatrix = false; // 标记是否为子矩阵 QMap m_mapSubWidgetIndex; QMap m_mapOutWidgetIndex; //QComboBox* comboBoxParagramSet; QMap m_mapParagramSetComboBox; QVBoxLayout* verticalLayout_tem = new QVBoxLayout(); bool m_isComBoxUpdating = false; };