#pragma once #ifndef TEMPLATE_PROGRAM_PAGE #define TEMPLATE_PROGRAM_PAGE //#include "Src/Sql/SqlOperation.h" #include "CViewInterface.h" #include "Src/RewriteControl/Controls/SpinBox.h" #include "Src/RewriteControl/Controls/DoubleSpinBox.h" #include "ui_TemplateProgramPage.h" #include "CModule.h" #include "CCamerAndLamp.h" #include "Src/common/JMessageTip.h" #include #include #include #include #include //#include #include #include #include #include #include //#include //#include //#include #include //#include #include #include class TemplateProgramPage : public QWidget { Q_OBJECT public: explicit TemplateProgramPage(QWidget* parent = nullptr); private: void AddPrStrategyPage(int vectorIndex, _PR_STRATEGY prStrategy); void AddPrTemplatePage(int vectorIndex, PR_TEMPLATE& prTemplate); void UpdatePrStrategyUI(); void UpdatePrTemplateUI(int vectorIndex, PR_TEMPLATE prTemplate); // 初始化数据 void initPage(); bool eventFilter(QObject* obj, QEvent* event); void setSelectedStyle(QWidget* selectedWidget); LONG DeletePrTemplate(UINT iTemplateId); LONG DeleteStrategy(UINT iStrategyId); LONG CreateTemplate(UINT _choseCameraId, int stratIndex); void refreshCurrentTabLayout(); void TemplateMoveToXYZRAxisPosition(UINT iModuleType, X_Y_Z_R_STRUCT pos); private slots: void showLargeImage(const QPixmap& pixmap, int index); void closeLargeImage(); void updateComboBox(UINT currentStrategyId); void onMoveTemplate(QWidget* pageWidget, bool moveLeft); void onAddStrategyClicked(); void onDeleteStrategyClicked(); void onAddTemplateClicked(); public: bool m_StrategyOrTemplateChanged = false; private: Ui::TemplateProgramPageClass ui; CManageDB* m_manageDB = nullptr; CProduct* m_pProduct = nullptr; ns_module::CCamerAndLamp* m_CamerAndLamp = nullptr; ns_module::CViewInterface* m_pTemplateCViewInterface = nullptr; static std::unordered_map m_IdIsUsedMap; bool m_isInitializing = false; std::vector m_vecPrStrategy; std::vector m_vecPrTemplate; ns_db::PR_STRATEGY* curentPrStrategy = nullptr; //QMap > m_mapStrategyIdToTemplateWidgetVec;//PrStrategyID 和 每个模板widget的对应 : 都不会重复 QMap m_mapIndexPrStrategyWidget;//PrStrategyID 和 每个模板widget的对应 QMap m_mapPrStrategyWidgetIndex;//每个模板widget的对应 和 PrStrategyID QMap m_mapIndexPrTemplateWidget;//PrTemplateID 和 每个模板widget的对应 QMap m_mapPrTemplateWidgetIndex;//PrTemplateID 和 每个模板widget的对应 QWidget* m_currentSelectedWidget = nullptr; // 用于追踪当前选中的outWidget // Tab 页中,放所有 outWidget 的容器布局 QTabWidget * ui_tabWidget = nullptr; QVector m_imageLabels; QVector m_imagePixmaps; QVBoxLayout* layout = nullptr; QDialog* largeImageDialog = nullptr; QLabel* largeImageLabel = nullptr; QMap m_mapWaferGroupBoxIndex; }; #endif // TEMPLATE_PROGRAM_PAGE