Browse Source

修复相机图片偏移bug以及物料刷新崩溃的bug

yun 1 day ago
parent
commit
b708d45218

+ 32 - 5
View/die-bonder-ui/OriginalWnd/ChartsAndCamerasWnd.cpp

@@ -71,7 +71,7 @@ ChartsAndCamerasWnd::ChartsAndCamerasWnd(QWidget* parent) :
 
 
     //isEnable = false;
-    // initFrom();
+    //initFrom();
     isShow = true;
     QTimer* timer = new QTimer(this);
     connect(timer, &QTimer::timeout, this, &ChartsAndCamerasWnd::setColor);
@@ -242,11 +242,21 @@ void ChartsAndCamerasWnd::on_CheckBox_clicked()
     }
 }
 #endif
-
+// 初始化静态成员
+ChartsAndCamerasWnd* ChartsAndCamerasWnd::m_instance = nullptr;
+ChartsAndCamerasWnd* ChartsAndCamerasWnd::GetInstance() {
+    if (!m_instance) {
+        m_instance = new ChartsAndCamerasWnd();
+    }
+    return m_instance;
+}
 void ChartsAndCamerasWnd::initFrom() 
 {
-
-
+    m_allGroup.clear();
+    waferMap.clear();
+    waffleMap.clear();
+    materialBoxMap.clear();
+    bondMap.clear();
     QWidget* viewport = ui->scrollArea->viewport();
     QWidget* container = new QWidget(viewport);
     QHBoxLayout* layout = new QHBoxLayout(container);
@@ -579,6 +589,8 @@ void ChartsAndCamerasWnd::initWidget() {
     if (lastIndex == 1) {
         ui->viewwidgetgroup->setEnableControls(true);
         BindImageOrMaterial(m_nImageIndex);
+        QPixmap pixmap = ui->viewwidgetgroup->getCurrentComboBoxPixmap(currentComboBoxIndex);
+        GetGroupImageShowSignals(pixmap);
 
     }
     else {
@@ -586,7 +598,7 @@ void ChartsAndCamerasWnd::initWidget() {
         BindImageOrMaterial(m_nMaterialIndex);
 
     }
-    //m_timerMaterial->start(1000);
+    m_timerMaterial->start(10000);
 }
 
 void ChartsAndCamerasWnd::saveInfoOfLast() {
@@ -786,5 +798,20 @@ void ChartsAndCamerasWnd::UpdateMaterialBox(int groupId) {
     }
 }
 
+void ChartsAndCamerasWnd::TimerMaterialStart() {
+
+    if (m_timerMaterial != nullptr) {
+        m_timerMaterial->start();
+    }
+
+}
+
+void ChartsAndCamerasWnd::TimerMaterialStop() {
+    if (m_timerMaterial != nullptr) {
+        m_timerMaterial->stop();
+    }
+
+}
+
 
 

+ 6 - 0
View/die-bonder-ui/OriginalWnd/ChartsAndCamerasWnd.h

@@ -26,6 +26,9 @@ public:
     explicit ChartsAndCamerasWnd(QWidget* parent = nullptr);
     ~ChartsAndCamerasWnd();
 
+    // 获取唯一实例的静态方法
+    static ChartsAndCamerasWnd* GetInstance();
+
     void initFrom();
     void updateMaterialWidget(int materialWndType, int groupId);
 
@@ -42,6 +45,8 @@ public:
     void UpdateWaffle(int groupId);
     void UpdateBond(int groupId);
     void UpdateMaterialBox(int groupId);
+    void TimerMaterialStart();
+    void TimerMaterialStop();
 
 protected:
     void wheelEvent(QWheelEvent* event) override;
@@ -157,6 +162,7 @@ private:
     const int                       m_nMaterialIndex = 2;
     QTimer* m_timerMaterial;
     ns_module::CViewInterface* m_pCViewInterface;
+    static ChartsAndCamerasWnd* m_instance; // 声明静态实例指针
 
 };
 

+ 33 - 1
View/die-bonder-ui/OriginalWnd/MainAndSecondaryCamerasWnd.cpp

@@ -70,6 +70,11 @@ void MainAndSecondaryCamerasWnd::initFrom()
 
 void MainAndSecondaryCamerasWnd::InitPage()
 {
+    m_allGroup.clear();
+    m_mapWaferMap.clear();
+    m_mapWaffleMap.clear();
+    m_mapMaterialBoxMap.clear();
+    m_mapBondMap.clear();
     QWidget* viewport = ui->scrollArea->viewport();
     QWidget* container = new QWidget(viewport);
     QHBoxLayout* mainLayout = new QHBoxLayout(container);
@@ -198,6 +203,14 @@ void MainAndSecondaryCamerasWnd::InitPage()
         //}
     }
 }
+// 初始化静态成员
+MainAndSecondaryCamerasWnd* MainAndSecondaryCamerasWnd::m_instance = nullptr;
+MainAndSecondaryCamerasWnd* MainAndSecondaryCamerasWnd::GetInstance() {
+    if (!m_instance) {
+        m_instance = new MainAndSecondaryCamerasWnd();
+    }
+    return m_instance;
+}
 
 void MainAndSecondaryCamerasWnd::CameraConnectUpdateImageFun(int nIndex, Group* widget, bool isUnCameraBind /*= false*/)
 {
@@ -320,6 +333,8 @@ void MainAndSecondaryCamerasWnd::initLeftAndRightWidget() {
 
             BindImageOrMaterial(m_nLastLeft, m_nImageIndex);
             ui->viewwidgetgroup_L->setEnableControls(true);
+            QPixmap pixmap_L = ui->viewwidgetgroup_L->getCurrentComboBoxPixmap(currentLeftComboBoxIndex);
+            GetGroupImageShowSignalsTo_L(pixmap_L);
 
         }
         else {
@@ -332,6 +347,8 @@ void MainAndSecondaryCamerasWnd::initLeftAndRightWidget() {
         if (lastIndex == 1) {
             BindImageOrMaterial(m_nCurrentRight, m_nImageIndex);
             ui->viewwidgetgroup_R->setEnableControls(true);
+            QPixmap pixmap_R = ui->viewwidgetgroup_R->getCurrentComboBoxPixmap(currentRightComboBoxIndex);
+            GetGroupImageShowSignalsTo_R(pixmap_R);
 
         }
         else {
@@ -340,7 +357,7 @@ void MainAndSecondaryCamerasWnd::initLeftAndRightWidget() {
 
         }
     }
-    //m_timerMaterial->start(1000);
+    m_timerMaterial->start(10000);
 }
 
 void MainAndSecondaryCamerasWnd::BindImageOrMaterial(int location, int index) 
@@ -884,3 +901,18 @@ void MainAndSecondaryCamerasWnd::UpdateMaterialBox(int groupId) {
         m_mapMaterialBoxMap.value(groupId)->UpdataGenerateTestData();
     }
 }
+
+void MainAndSecondaryCamerasWnd::TimerMaterialStart() {
+
+    if (m_timerMaterial != nullptr) {
+        m_timerMaterial->start();
+    }
+    
+}
+
+void MainAndSecondaryCamerasWnd::TimerMaterialStop() {
+    if (m_timerMaterial != nullptr) {
+        m_timerMaterial->stop();
+    }
+    
+}

+ 5 - 0
View/die-bonder-ui/OriginalWnd/MainAndSecondaryCamerasWnd.h

@@ -22,6 +22,8 @@ public:
     explicit MainAndSecondaryCamerasWnd(QWidget *parent = nullptr);
 
     ~MainAndSecondaryCamerasWnd();
+    // 获取唯一实例的静态方法
+    static MainAndSecondaryCamerasWnd* GetInstance();
     void initFrom();
 
     void InitPage();
@@ -46,6 +48,8 @@ public:
     void UpdateWaffle(int groupId);
     void UpdateBond(int groupId);
     void UpdateMaterialBox(int groupId);
+    void TimerMaterialStart();
+    void TimerMaterialStop();
 
 protected:
     void wheelEvent(QWheelEvent* event) override;
@@ -179,6 +183,7 @@ private:
     const int           m_nMaterialIndex = 2;
     QTimer*             m_timerMaterial;
     ns_module::CViewInterface* m_pCViewInterface;
+    static MainAndSecondaryCamerasWnd* m_instance; // 声明静态实例指针
 
 };
 

+ 18 - 3
View/die-bonder-ui/OriginalWnd/OriginalWnd.cpp

@@ -324,24 +324,39 @@ void OriginalWnd::CreateSwitchMainPage(int nlastIndex /*= -1*/)
     }
 
     // 切换窗口
+    ChartsAndCamerasWnd* chartsAndCamerasWnd;
+    chartsAndCamerasWnd = ChartsAndCamerasWnd::GetInstance();
+    MainAndSecondaryCamerasWnd* mainAndSecondaryCamerasWnd;
+    mainAndSecondaryCamerasWnd = MainAndSecondaryCamerasWnd::GetInstance();
+    SingleCameraOperationWnd* singleCameraOperationWnd;
+    singleCameraOperationWnd = SingleCameraOperationWnd::GetInstance();
     switch (nlastIndex)
     {
     case EN_WND_SWITCH::ChartsAnd:
     {
-        ChartsAndCamerasWnd* chartsAndCamerasWnd = new ChartsAndCamerasWnd;
+
         SwitchMainPage(chartsAndCamerasWnd, ui->ChartButton);
+        chartsAndCamerasWnd->TimerMaterialStart();
+        mainAndSecondaryCamerasWnd->TimerMaterialStop();
+        singleCameraOperationWnd->TimerMaterialStop();
     }
     break;
     case EN_WND_SWITCH::MainAndSecondary:
     {
-        MainAndSecondaryCamerasWnd* mainAndSecondaryCamerasWnd = new MainAndSecondaryCamerasWnd;
+
         SwitchMainPage(mainAndSecondaryCamerasWnd, ui->DoubleImageButton);
+        mainAndSecondaryCamerasWnd->TimerMaterialStart();
+        chartsAndCamerasWnd->TimerMaterialStop();
+        singleCameraOperationWnd->TimerMaterialStop();
     }
     break;
     case EN_WND_SWITCH::SingleCameraOperation:
     {
-        SingleCameraOperationWnd* singleCameraOperationWnd = new SingleCameraOperationWnd;
+
         SwitchMainPage(singleCameraOperationWnd, ui->SingleImageButton);
+        singleCameraOperationWnd->TimerMaterialStart();
+        chartsAndCamerasWnd->TimerMaterialStop();
+        mainAndSecondaryCamerasWnd->TimerMaterialStop();
     }
     break;
     default:

+ 31 - 2
View/die-bonder-ui/OriginalWnd/SingleCameraOperationWnd.cpp

@@ -33,7 +33,11 @@ SingleCameraOperationWnd::~SingleCameraOperationWnd()
 
 void SingleCameraOperationWnd::initFrom()
 {
-
+    m_allGroup.clear();
+    waferMap.clear();
+    waffleMap.clear();
+    materialBoxMap.clear();
+    bondMap.clear();
     // 设置右上部分
     QWidget* viewport = ui->scrollArea->viewport();
     QWidget* container = new QWidget(viewport);
@@ -146,6 +150,14 @@ void SingleCameraOperationWnd::initFrom()
 
     }
 }
+// 初始化静态成员
+SingleCameraOperationWnd* SingleCameraOperationWnd::m_instance = nullptr;
+SingleCameraOperationWnd* SingleCameraOperationWnd::GetInstance() {
+    if (!m_instance) {
+        m_instance = new SingleCameraOperationWnd();
+    }
+    return m_instance;
+}
 
 void SingleCameraOperationWnd::closeEvent(QCloseEvent* event) {
     // 保存滑块状态
@@ -419,6 +431,8 @@ void SingleCameraOperationWnd::initWidget() {
     if (lastIndex == 1) {
         ui->viewwidgetgroup->setEnableControls(true);
         BindImageOrMaterial(m_nImageIndex);
+        QPixmap pixmap = ui->viewwidgetgroup->getCurrentComboBoxPixmap(currentComboBoxIndex);
+        GetGroupImageShowSignals(pixmap);
 
     }
     else {
@@ -426,7 +440,7 @@ void SingleCameraOperationWnd::initWidget() {
         BindImageOrMaterial(m_nMaterialIndex);
 
     }
-    //m_timerMaterial->start(1000);
+    m_timerMaterial->start(10000);
 
 }
 
@@ -623,4 +637,19 @@ void SingleCameraOperationWnd::UpdateMaterialBox(int groupId) {
     {
         materialBoxMap.value(groupId)->UpdataGenerateTestData();
     }
+}
+
+void SingleCameraOperationWnd::TimerMaterialStart() {
+
+    if (m_timerMaterial != nullptr) {
+        m_timerMaterial->start();
+    }
+
+}
+
+void SingleCameraOperationWnd::TimerMaterialStop() {
+    if (m_timerMaterial != nullptr) {
+        m_timerMaterial->stop();
+    }
+
 }

+ 6 - 0
View/die-bonder-ui/OriginalWnd/SingleCameraOperationWnd.h

@@ -26,6 +26,9 @@ public:
     explicit SingleCameraOperationWnd(QWidget* parent = nullptr);
     ~SingleCameraOperationWnd();
 
+    // 获取唯一实例的静态方法
+    static SingleCameraOperationWnd* GetInstance();
+
     void initFrom();
     void closeEvent(QCloseEvent* event) override;
 
@@ -46,6 +49,8 @@ public:
     void UpdateWaffle(int groupId);
     void UpdateBond(int groupId);
     void UpdateMaterialBox(int groupId);
+    void TimerMaterialStart();
+    void TimerMaterialStop();
 public slots: // 确保这里声明了槽函数
 
     QString getImagePathFromIndex(int index);
@@ -120,6 +125,7 @@ private:
     const int                       m_nMaterialIndex = 2;
     QTimer* m_timerMaterial;
     ns_module::CViewInterface* m_pCViewInterface;
+    static SingleCameraOperationWnd* m_instance; // 声明静态实例指针
 };
 
 #endif // SINGLECAMERAOPERATIONWND_H