Prechádzať zdrojové kódy

调整界面,新增相机图片获取对接类

Change-Id: I35f5fc4a633672b2f0b464e8fd7d0ab5d038bfab
li_xingqi* 2 mesiacov pred
rodič
commit
ec37bf1a25

+ 48 - 0
CameraImage/CameraImageHandler.cpp

@@ -0,0 +1,48 @@
+#include "CameraImageHandler.h"
+#include "Group.h"
+
+CameraImageHandler::CameraImageHandler(int iCameraId) {
+    initGroup(iCameraId);
+}
+
+// void CameraImageHandler::captureAndConvertImage() {
+
+// }
+
+Group* CameraImageHandler::getGroup() const {
+    return group;
+}
+
+void CameraImageHandler::initGroup(int CameraId) {
+    QStringList dispmodel1;
+    dispmodel1 << "P die align" << "D device align";
+
+    QStringList dispmodel2;
+    dispmodel2 << "D device align" << "P die align";
+
+    QStringList dispmodel3;
+    dispmodel3 << "B device align" << "P die align";
+
+    QStringList dispmodel4;
+    dispmodel4 << "U die align" << "D device align";
+
+    if (CameraId == 1) {
+        group = new Group(CameraId, ":/images/test_image/image_1.png", ":/images/test_image/image_2.png", dispmodel1, this);
+    } else if (CameraId == 2) {
+        group = new Group(CameraId, ":/images/test_image/image_3.png", ":/images/test_image/image_4.png", dispmodel2, this);
+    } else if (CameraId == 3) {
+        group = new Group(CameraId, ":/images/test_image/image_5.png", ":/images/test_image/image_6.png", dispmodel3, this);
+    } else if (CameraId == 4) {
+        group = new Group(CameraId, ":/images/test_image/image_7.png", ":/images/test_image/image_8.png", dispmodel4, this);
+    } else if (CameraId == 5) {
+        group = new Group(CameraId, ":/images/test_image/image_1.png", ":/images/test_image/image_2.png", dispmodel1, this);
+    } else if (CameraId == 6) {
+        group = new Group(CameraId, ":/images/test_image/image_3.png", ":/images/test_image/image_4.png", dispmodel2, this);
+    } else if (CameraId == 7) {
+        group = new Group(CameraId, ":/images/test_image/image_5.png", ":/images/test_image/image_6.png", dispmodel3, this);
+    } else if (CameraId == 8) {
+        group = new Group(CameraId, ":/images/test_image/image_7.png", ":/images/test_image/image_8.png", dispmodel4, this);
+    } else {
+        group = nullptr; // 如果 CameraId 不匹配,则 group 为 nullptr
+    }
+}

+ 19 - 0
CameraImage/CameraImageHandler.h

@@ -0,0 +1,19 @@
+#ifndef CAMERAIMAGEHANDLER_H
+#define CAMERAIMAGEHANDLER_H
+#include "Group.h"
+
+
+class CameraImageHandler : public QWidget {
+    Q_OBJECT
+public:
+    CameraImageHandler(int iCameraId);
+
+    Group* getGroup() const;
+
+private:
+    // void captureAndConvertImage();
+    Group* group;  // 存储 Group 对象的容器
+    void initGroup(int CameraId);
+};
+
+#endif // CAMERAIMAGEHANDLER_H

+ 78 - 55
OriginalWnd/ChartsAndCamerasWnd.cpp

@@ -8,6 +8,8 @@
 #include "chartline.h"
 #include <QRandomGenerator>
 #include <qDebug>
+// #include "CInterface.h"
+#include "CameraImage/CameraImageHandler.h"
 
 ChartsAndCamerasWnd::ChartsAndCamerasWnd(QWidget *parent) :
     QMainWindow(parent),
@@ -70,14 +72,12 @@ ChartsAndCamerasWnd::~ChartsAndCamerasWnd()
 }
 
 
-
-
 void ChartsAndCamerasWnd::initializeSeriesInfo()
 {
     // 初始化系列信息,使用 DataSeries 结构体
     m_seriesMap["GreenDiamond"] = DataSeries{
         "GreenDiamond",
-       QColor("#00FF00"), // 绿色
+        QColor("#00FF00"), // 绿色
         QPixmap(":/images/Participation display/GreenDiamond.png"),
         QList<QPointF>() // 初始为空
     };
@@ -154,8 +154,6 @@ void ChartsAndCamerasWnd::initializeSeriesInfo()
 }
 
 
-
-
 void ChartsAndCamerasWnd::on_CheckBox_clicked()
 {
     // 获取发送信号的复选框
@@ -206,9 +204,6 @@ void ChartsAndCamerasWnd::on_CheckBox_clicked()
 }
 
 
-
-
-
 void ChartsAndCamerasWnd::initFrom() {
     QTimer *timer = new QTimer(this);
     connect(timer, &QTimer::timeout, this, &ChartsAndCamerasWnd::checkSettings);
@@ -216,9 +211,6 @@ void ChartsAndCamerasWnd::initFrom() {
 
     ui->label_Percentage->setAlignment(Qt::AlignCenter);
 
-    // 设置右下部分
-    // loadSliderStates();
-
     initSliders();
     initLineEdits();
 
@@ -234,49 +226,78 @@ void ChartsAndCamerasWnd::initFrom() {
     QHBoxLayout *layout = new QHBoxLayout(container);
 
     layout->setSpacing(16); // 设置Group之间的间隔距离
-    layout->setContentsMargins(0, 0, 0, 0); // 设置布局的边距为0
-
-    QStringList dispmodel;
-    dispmodel << "P die align" << "D device align";
-    Group *widget = new Group(1, ":/images/test_image/image_1.png", ":/images/test_image/image_2.png", dispmodel, this);
-    layout->addWidget(widget);
-
-    QStringList dispmodel1;
-    dispmodel1 << "D device align" << "P die align";
-    Group *widget_1 = new Group(2, ":/images/test_image/image_3.png", ":/images/test_image/image_4.png", dispmodel1, this);
-    layout->addWidget(widget_1);
-
-    QStringList dispmodel2;
-    dispmodel2 << "B device align" << "P die align";
-    Group *widget_2 = new Group(3, ":/images/test_image/image_5.png", ":/images/test_image/image_6.png", dispmodel2, this);
-    layout->addWidget(widget_2);
-
-    QStringList dispmodel3;
-    dispmodel3 << "U die align" << "D device align";
-    Group *widget_3 = new Group(4, ":/images/test_image/image_7.png", ":/images/test_image/image_8.png", dispmodel3, this);
-    layout->addWidget(widget_3);
+    layout->setMargin(0);
+
+    // CInterface interface;
+    // ImageInfo image;
+
+    // long result = interface.GrabImage(1, image);
+
+    // if (result == 0) {
+    //     qDebug() << "Image width: " << image.width;
+    //     qDebug() << "Image height: " << image.height;
+    //     qDebug() << "Image width: " << image.format;
+
+    //     QImage img;
+
+    //     // 根据图像格式转换
+    //     switch (image.format) {
+    //     case GRAY8:
+    //         img = QImage(image.data, image.width, image.height, QImage::Format_Grayscale8);
+    //         break;
+    //     case RGB888:
+    //         img = QImage(image.data, image.width, image.height, QImage::Format_RGB888);
+    //         break;
+    //     case ARGB8888:
+    //         img = QImage(image.data, image.width, image.height, QImage::Format_ARGB32);
+    //         break;
+    //     case RGB32:
+    //         img = QImage(image.data, image.width, image.height, QImage::Format_RGB32);
+    //         break;
+    //     case YUV422:
+    //         // YUV422 需要额外的转换逻辑
+    //         // 这里假设你有转换函数 convertYUV422ToRGB
+    //         // img = convertYUV422ToRGB(image.data, image.width, image.height);
+    //         break;
+    //     default:
+    //         qDebug() << "Unsupported image format";
+    //     }
+
+    // } else {
+    //     qDebug() << "Failed to grab image, error code: " << result;
+    // }
+
+    QList<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8};
+
+    QList<Group*> widgets;
+
+    for (int i = 0; i < numbers.size(); ++i) {
+        int num = numbers[i];
+        CameraImageHandler* manager = new CameraImageHandler(num);
+        Group* widget = manager->getGroup();
+
+        if (widget != nullptr) {
+            layout->addWidget(widget);
+            widgets.append(widget);
+        }
 
-    Group *widget_4 = new Group(5, ":/images/test_image/image.png", ":/images/test_image/image_2.png", dispmodel, this);
-    layout->addWidget(widget_4);
+        delete manager;
+    }
 
     // 设置控件的最小高度和最大宽度
     int minHeight = 162;
     int maxWidth = 244;
-    QWidgetList widgets = {widget, widget_1, widget_2, widget_3, widget_4};
-    for (QWidget *w : widgets) {
+    int num = -16;
+    for (Group* w : widgets) {
         w->setMinimumHeight(minHeight);
         w->setMaximumWidth(maxWidth);
+        num = num + 260;
     }
 
+    container->setMinimumSize(num, 162);
     container->setLayout(layout);
     ui->scrollArea->setWidget(container);
-
-    // 确保滚动条策略正确设置
-    ui->scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
-    ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-
-    // 调整滚动区域的大小以适应内容
-    ui->scrollArea->resize(529, 172);
+    ui->scrollArea->resize(508, 177);
 
     ui->Operatewidget->setMouseTracking(true);
 }
@@ -328,8 +349,6 @@ void ChartsAndCamerasWnd::connectSliderAndLineEdit(QSlider* slider, QLineEdit* l
 }
 
 void ChartsAndCamerasWnd::checkSettings() {
-
-
     QSettings settings("YourCompany", "YourApplication_");
     int groupId = settings.value("GroupId", 0).toInt();
     int index = settings.value("Index", 0).toInt();
@@ -383,9 +402,7 @@ void ChartsAndCamerasWnd::loadGroupSettings(int Id, int Index) {
 
 void ChartsAndCamerasWnd::on_ZoomUpButton_clicked()
 {
-    if (scaleFactor < 3.0) {
-        scaleFactor *= 1.1;
-    }
+    scaleFactor *= 1.1;
 
     int newWidth = currentPixmap.width() * scaleFactor;
     int newHeight = currentPixmap.height() * scaleFactor;
@@ -401,8 +418,12 @@ void ChartsAndCamerasWnd::on_ZoomUpButton_clicked()
 
 void ChartsAndCamerasWnd::on_ZoomOutButton_clicked()
 {
-    if (scaleFactor > 0.25) {
-        scaleFactor *= 0.9;
+    double newScaleFactor = scaleFactor * 0.9;
+
+    if (newScaleFactor >= 1.0) {
+        scaleFactor = newScaleFactor;
+    } else {
+        scaleFactor = 1.0;
     }
 
     int newWidth = currentPixmap.width() * scaleFactor;
@@ -421,12 +442,14 @@ void ChartsAndCamerasWnd::wheelEvent(QWheelEvent *event)
 {
     if (ui->Operatewidget->rect().contains(ui->Operatewidget->mapFromGlobal(event->globalPos()))) {
         if (event->angleDelta().y() > 0) {
-            if (scaleFactor < 3.0) {
-                scaleFactor *= 1.1;
-            }
+            scaleFactor *= 1.1;
         } else {
-            if (scaleFactor > 0.25) {
-                scaleFactor *= 0.9;
+            double newScaleFactor = scaleFactor * 0.9;
+
+            if (newScaleFactor >= 1.0) {
+                scaleFactor = newScaleFactor;
+            } else {
+                scaleFactor = 1.0;
             }
         }
 

+ 13 - 10
OriginalWnd/ChartsAndCamerasWnd.ui

@@ -334,8 +334,8 @@
       <rect>
        <x>30</x>
        <y>72</y>
-       <width>476</width>
-       <height>476</height>
+       <width>480</width>
+       <height>480</height>
       </rect>
      </property>
     </widget>
@@ -367,7 +367,7 @@
       <rect>
        <x>16</x>
        <y>572</y>
-       <width>504</width>
+       <width>508</width>
        <height>32</height>
       </rect>
      </property>
@@ -523,8 +523,8 @@
       <rect>
        <x>29</x>
        <y>71</y>
-       <width>478</width>
-       <height>478</height>
+       <width>481</width>
+       <height>481</height>
       </rect>
      </property>
     </widget>
@@ -836,7 +836,7 @@
       <rect>
        <x>20</x>
        <y>628</y>
-       <width>496</width>
+       <width>500</width>
        <height>1</height>
       </rect>
      </property>
@@ -849,13 +849,16 @@
       <rect>
        <x>16</x>
        <y>652</y>
-       <width>529</width>
-       <height>172</height>
+       <width>508</width>
+       <height>177</height>
       </rect>
      </property>
      <property name="verticalScrollBarPolicy">
       <enum>Qt::ScrollBarAsNeeded</enum>
      </property>
+     <property name="horizontalScrollBarPolicy">
+      <enum>Qt::ScrollBarAsNeeded</enum>
+     </property>
      <property name="widgetResizable">
       <bool>true</bool>
      </property>
@@ -864,8 +867,8 @@
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>527</width>
-        <height>170</height>
+        <width>506</width>
+        <height>175</height>
        </rect>
       </property>
      </widget>

+ 95 - 99
OriginalWnd/MainAndSecondaryCamerasWnd.cpp

@@ -5,6 +5,7 @@
 #include "Group.h"
 #include <QVBoxLayout>
 #include <QTimer>
+#include "CameraImage/CameraImageHandler.h"
 
 MainAndSecondaryCamerasWnd::MainAndSecondaryCamerasWnd(QWidget *parent)
     : QMainWindow(parent)
@@ -12,6 +13,14 @@ MainAndSecondaryCamerasWnd::MainAndSecondaryCamerasWnd(QWidget *parent)
 {
     ui->setupUi(this);
 
+    QSettings settings("YourOrganization", "YourApplication");
+    settings.beginGroup("LastSettings");
+    lastRightPixmap = settings.value("LastRightPixmap").value<QPixmap>();
+    lasttextList = settings.value("LasttextList").toStringList();
+    lastLastRightPixmap = settings.value("LastLastRightPixmap").value<QPixmap>();
+    lastLasttextList = settings.value("LastLasttextList").toStringList();
+    settings.endGroup();
+
     initFrom();
 }
 
@@ -22,6 +31,7 @@ MainAndSecondaryCamerasWnd::~MainAndSecondaryCamerasWnd()
 
 void MainAndSecondaryCamerasWnd::initFrom()
 {
+
     QTimer *timer = new QTimer(this);
     connect(timer, &QTimer::timeout, this, &MainAndSecondaryCamerasWnd::checkSettings);
     timer->start(100);
@@ -41,87 +51,42 @@ void MainAndSecondaryCamerasWnd::initFrom()
 
     QWidget *viewport = ui->scrollArea->viewport();
     QWidget *container = new QWidget(viewport);
-
-    // 创建水平布局
     QHBoxLayout *mainLayout = new QHBoxLayout(container);
 
-    // 创建四个垂直布局,分别用于四个区域
-    QVBoxLayout *vLayout1 = new QVBoxLayout();
-    QVBoxLayout *vLayout2 = new QVBoxLayout();
-    QVBoxLayout *vLayout3 = new QVBoxLayout();
-    QVBoxLayout *vLayout4 = new QVBoxLayout();
-
-    vLayout1->setSpacing(16);
-    vLayout1->setMargin(0);
-    vLayout2->setSpacing(16);
-    vLayout2->setMargin(0);
-    vLayout3->setSpacing(16);
-    vLayout3->setMargin(0);
-    vLayout4->setSpacing(16);
-    vLayout4->setMargin(0);
-
-    QStringList dispmodel1;
-    dispmodel1 << "P die align" << "D device align";
-    Group *widget1 = new Group(16, ":/images/test_image/image_1.png", ":/images/test_image/image_2.png", dispmodel1, this);
-
-    QStringList dispmodel2;
-    dispmodel2 << "D device align" << "P die align";
-    Group *widget2 = new Group(17, ":/images/test_image/image_3.png", ":/images/test_image/image_4.png", dispmodel2, this);
-
-    QStringList dispmodel3;
-    dispmodel3 << "B device align" << "P die align";
-    Group *widget3 = new Group(18, ":/images/test_image/image_5.png", ":/images/test_image/image_6.png", dispmodel3, this);
-
-    QStringList dispmodel4;
-    dispmodel4 << "U die align" << "D device align";
-    Group *widget4 = new Group(19, ":/images/test_image/image_7.png", ":/images/test_image/image_8.png", dispmodel4, this);
-
-    QStringList dispmodel5;
-    dispmodel5 << "P die align" << "D device align";
-    Group *widget5 = new Group(20, ":/images/test_image/image_1.png", ":/images/test_image/image_2.png", dispmodel1, this);
-
-    QStringList dispmodel6;
-    dispmodel6 << "D device align" << "P die align";
-    Group *widget6 = new Group(21, ":/images/test_image/image_3.png", ":/images/test_image/image_4.png", dispmodel2, this);
-
-    QStringList dispmodel7;
-    dispmodel7 << "B device align" << "P die align";
-    Group *widget7 = new Group(22, ":/images/test_image/image_5.png", ":/images/test_image/image_6.png", dispmodel3, this);
-
-    QStringList dispmodel8;
-    dispmodel8 << "U die align" << "D device align";
-    Group *widget8 = new Group(23, ":/images/test_image/image_7.png", ":/images/test_image/image_8.png", dispmodel4, this);
-
-    vLayout1->addWidget(widget1);
-    vLayout1->addWidget(widget8);
-    vLayout2->addWidget(widget7);
-    vLayout2->addWidget(widget2);
-    vLayout3->addWidget(widget3);
-    vLayout3->addWidget(widget6);
-    vLayout4->addWidget(widget5);
-    vLayout4->addWidget(widget4);
+    mainLayout->setSpacing(28);
+    mainLayout->setMargin(0);
 
+    QList<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8};
+
+    QList<Group*> widgets;
+
+    for (int i = 0; i < numbers.size(); ++i) {
+        int num = numbers[i];
+        CameraImageHandler* manager = new CameraImageHandler(num);
+        Group* widget = manager->getGroup();
+
+        if (widget != nullptr) {
+            mainLayout->addWidget(widget);
+            widgets.append(widget);
+        }
+
+        delete manager;
+    }
+
+    // 设置控件的最小高度和最大宽度
     int minHeight = 162;
     int maxWidth = 244;
-    QWidgetList widgets = {widget1, widget2, widget3, widget4, widget5, widget6, widget7, widget8};
-    for (QWidget *w : widgets) {
+    int num = -28;
+    for (Group* w : widgets) {
         w->setMinimumHeight(minHeight);
         w->setMaximumWidth(maxWidth);
+        num = num + 272;
     }
 
-    mainLayout->addLayout(vLayout1);
-    mainLayout->addSpacing(8); // 第一个和第二个之间的间距
-    mainLayout->addLayout(vLayout2);
-    mainLayout->addSpacing(52); // 第二个和第三个之间的间距
-    mainLayout->addLayout(vLayout3);
-    mainLayout->addSpacing(8); // 第三个和第四个之间的间距
-    mainLayout->addLayout(vLayout4);
-
-    mainLayout->setContentsMargins(0, 0, 8, 0);
-
+    container->setMinimumSize(num, 162);
     container->setLayout(mainLayout);
     ui->scrollArea->setWidget(container);
-    ui->scrollArea->resize(1083, 162);
+    ui->scrollArea->resize(1062, 177);
 
     ui->LeftOperatewidget->setMouseTracking(true);
     ui->RightOperatewidget->setMouseTracking(true);
@@ -194,25 +159,31 @@ void MainAndSecondaryCamerasWnd::loadSettings()
 }
 
 void MainAndSecondaryCamerasWnd::loadGroupSettings(int Id, int Index) {
+    // isUpdatingSettings = true;
     QSettings settings("YourOrganization", "YourApplication");
     settings.beginGroup(QString::number(Id));
     QString imagePath1 = settings.value("ImagePath1").toString();
     QString imagePath2 = settings.value("ImagePath2").toString();
     QStringList textList = settings.value("TextList").toStringList();
     settings.endGroup();
+    QString lastRightImage = settings.value("LastRightImage").toString();
 
     QSize size_left = ui->LeftOperatewidget->size();
     QSize size_right = ui->RightOperatewidget->size();
 
-    QPixmap LeftPixmap = QPixmap(imagePath2);
-    QPixmap RightPixmap = QPixmap(imagePath1);
-
-    QPixmap scaledPixmap_left = LeftPixmap.scaled(size_left, Qt::KeepAspectRatio, Qt::SmoothTransformation);
-    ui->LeftOperatewidget->setPixmap(scaledPixmap_left);
+    QPixmap newPixmap;
+    if (Index == 1) {
+        newPixmap = QPixmap(imagePath1);
+    } else if (Index == 2) {
+        newPixmap = QPixmap(imagePath2);
+    }
 
-    QPixmap scaledPixmap_right = RightPixmap.scaled(size_right, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+    QPixmap scaledPixmap_right = newPixmap.scaled(size_right, Qt::KeepAspectRatio, Qt::SmoothTransformation);
     ui->RightOperatewidget->setPixmap(scaledPixmap_right);
 
+    QPixmap scaledPixmap_left = lastRightPixmap.scaled(size_left, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+    ui->LeftOperatewidget->setPixmap(scaledPixmap_left);
+
     // 更新当前图片的成员变量
     Left_currentPixmap = scaledPixmap_left;
     Left_scaleFactor = 1.0;
@@ -222,18 +193,29 @@ void MainAndSecondaryCamerasWnd::loadGroupSettings(int Id, int Index) {
     ui->Rightlabel_Percentage->setText("100%");
 
     ui->LeftDataSources->clear();
-    ui->LeftDataSources->addItems(textList);
+    ui->LeftDataSources->addItems(lasttextList);
     ui->RightDataSources->clear();
     ui->RightDataSources->addItems(textList);
-    // connect(ui->DatacomboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(Demo001_3::onComboBoxIndexChanged(int)));
-}
 
+    // 保存到 QSettings
+    settings.beginGroup("LastSettings");
+    settings.setValue("LastRightPixmap", lastRightPixmap);
+    settings.setValue("LasttextList", lasttextList);
+    settings.setValue("LastLastRightPixmap", lastLastRightPixmap);
+    settings.setValue("LastLasttextList", lastLasttextList);
+    settings.endGroup();
+
+    if (isUpdatingSettings) {
+        lastLastRightPixmap = lastRightPixmap;
+        lastLasttextList = lasttextList;
+        lastRightPixmap = scaledPixmap_right;
+        lasttextList = textList;
+    }
+}
 
 void MainAndSecondaryCamerasWnd::on_LeftZoomUpButton_clicked()
 {
-    if (Left_scaleFactor < 3.0) {
-        Left_scaleFactor *= 1.1;
-    }
+    Left_scaleFactor *= 1.1;
 
     int newWidth = Left_currentPixmap.width() * Left_scaleFactor;
     int newHeight = Left_currentPixmap.height() * Left_scaleFactor;
@@ -250,9 +232,7 @@ void MainAndSecondaryCamerasWnd::on_LeftZoomUpButton_clicked()
 
 void MainAndSecondaryCamerasWnd::on_RightZoomUpButton_clicked()
 {
-    if (Right_scaleFactor < 3.0) {
-        Right_scaleFactor *= 1.1;
-    }
+    Right_scaleFactor *= 1.1;
 
     int newWidth = Right_currentPixmap.width() * Right_scaleFactor;
     int newHeight = Right_currentPixmap.height() * Right_scaleFactor;
@@ -269,8 +249,12 @@ void MainAndSecondaryCamerasWnd::on_RightZoomUpButton_clicked()
 
 void MainAndSecondaryCamerasWnd::on_LeftZoomOutButton_clicked()
 {
-    if (Left_scaleFactor > 0.25) {
-        Left_scaleFactor *= 0.9;
+    double Left_newScaleFactor = Left_scaleFactor * 0.9;
+
+    if (Left_newScaleFactor >= 1.0) {
+        Left_scaleFactor = Left_newScaleFactor;
+    } else {
+        Left_scaleFactor = 1.0;
     }
 
     int newWidth = Left_currentPixmap.width() * Left_scaleFactor;
@@ -288,8 +272,12 @@ void MainAndSecondaryCamerasWnd::on_LeftZoomOutButton_clicked()
 
 void MainAndSecondaryCamerasWnd::on_RightZoomOutButton_clicked()
 {
-    if (Right_scaleFactor > 0.25) {
-        Right_scaleFactor *= 0.9;
+    double Right_newScaleFactor = Right_scaleFactor * 0.9;
+
+    if (Right_newScaleFactor >= 1.0) {
+        Right_scaleFactor = Right_newScaleFactor;
+    } else {
+        Right_scaleFactor = 1.0;
     }
 
     int newWidth = Right_currentPixmap.width() * Right_scaleFactor;
@@ -308,12 +296,14 @@ void MainAndSecondaryCamerasWnd::wheelEvent(QWheelEvent *event)
 {
     if (ui->LeftOperatewidget->rect().contains(ui->LeftOperatewidget->mapFromGlobal(event->globalPosition().toPoint()))) {
         if (event->angleDelta().y() > 0) {
-            if (Left_scaleFactor < 3.0) {
-                Left_scaleFactor *= 1.1;
-            }
+            Left_scaleFactor *= 1.1;
         } else {
-            if (Left_scaleFactor > 0.25) {
-                Left_scaleFactor *= 0.9;
+            double Left_newScaleFactor = Left_scaleFactor * 0.9;
+
+            if (Left_newScaleFactor >= 1.0) {
+                Left_scaleFactor = Left_newScaleFactor;
+            } else {
+                Left_scaleFactor = 1.0;
             }
         }
 
@@ -330,12 +320,14 @@ void MainAndSecondaryCamerasWnd::wheelEvent(QWheelEvent *event)
 
     if (ui->RightOperatewidget->rect().contains(ui->RightOperatewidget->mapFromGlobal(event->globalPosition().toPoint()))) {
         if (event->angleDelta().y() > 0) {
-            if (Right_scaleFactor < 3.0) {
-                Right_scaleFactor *= 1.1;
-            }
+            Right_scaleFactor *= 1.1;
         } else {
-            if (Right_scaleFactor > 0.25) {
-                Right_scaleFactor *= 0.9;
+            double Right_newScaleFactor = Right_scaleFactor * 0.9;
+
+            if (Right_newScaleFactor >= 1.0) {
+                Right_scaleFactor = Right_newScaleFactor;
+            } else {
+                Right_scaleFactor = 1.0;
             }
         }
 
@@ -354,11 +346,15 @@ void MainAndSecondaryCamerasWnd::wheelEvent(QWheelEvent *event)
 }
 
 void MainAndSecondaryCamerasWnd::showEvent(QShowEvent *event) {
+    isUpdatingSettings = false;
     QMainWindow::showEvent(event);
+
     loadSettings();
+    isUpdatingSettings = true;
 }
 
 void MainAndSecondaryCamerasWnd::hideEvent(QHideEvent *event) {
+    isUpdatingSettings = false;
     QMainWindow::hideEvent(event);
 }
 

+ 5 - 0
OriginalWnd/MainAndSecondaryCamerasWnd.h

@@ -52,6 +52,11 @@ private:
     qreal Right_scaleFactor;
     int lastGroupId = -1;
     int lastIndex = -1;
+    QPixmap lastRightPixmap;
+    QStringList lasttextList;
+    QPixmap lastLastRightPixmap;  // 用于存储上一次的 lastRightPixmap
+    QStringList lastLasttextList;
+    bool isUpdatingSettings;
 };
 
 #endif // MAINANDSECONDARYCAMERASWND_H

+ 7 - 7
OriginalWnd/MainAndSecondaryCamerasWnd.ui

@@ -440,7 +440,7 @@
     <property name="geometry">
      <rect>
       <x>582</x>
-      <y>830</y>
+      <y>845</y>
       <width>114</width>
       <height>114</height>
      </rect>
@@ -541,7 +541,7 @@
     <property name="geometry">
      <rect>
       <x>712</x>
-      <y>830</y>
+      <y>845</y>
       <width>114</width>
       <height>114</height>
      </rect>
@@ -642,7 +642,7 @@
     <property name="geometry">
      <rect>
       <x>842</x>
-      <y>830</y>
+      <y>845</y>
       <width>114</width>
       <height>114</height>
      </rect>
@@ -744,8 +744,8 @@
      <rect>
       <x>20</x>
       <y>652</y>
-      <width>1083</width>
-      <height>162</height>
+      <width>1062</width>
+      <height>177</height>
      </rect>
     </property>
     <property name="verticalScrollBarPolicy">
@@ -759,8 +759,8 @@
       <rect>
        <x>0</x>
        <y>0</y>
-       <width>1081</width>
-       <height>160</height>
+       <width>1060</width>
+       <height>175</height>
       </rect>
      </property>
     </widget>

+ 30 - 31
OriginalWnd/SingleCameraOperationWnd.cpp

@@ -6,6 +6,7 @@
 #include <QVBoxLayout>
 #include <QDebug>
 #include <QTimer>
+#include "CameraImage/CameraImageHandler.h"
 
 SingleCameraOperationWnd::SingleCameraOperationWnd(QWidget *parent)
     : QMainWindow(parent)
@@ -14,7 +15,6 @@ SingleCameraOperationWnd::SingleCameraOperationWnd(QWidget *parent)
     ui->setupUi(this);
 
     initFrom();
-    // connect(this, &SingleCameraOperationWnd::closeEvent, this, &SingleCameraOperationWnd::saveSliderStates);
 }
 
 SingleCameraOperationWnd::~SingleCameraOperationWnd()
@@ -50,33 +50,27 @@ void SingleCameraOperationWnd::initFrom() {
     layout->setSpacing(16); // 设置Group之间的间隔距离
     layout->setMargin(0);
 
-    QStringList dispmodel;
-    dispmodel<<("P die align")<<("D device align");
-    Group *widget = new Group(1, ":/images/test_image/image_1.png", ":/images/test_image/image_2.png", dispmodel, this);
-    layout->addWidget(widget);
+    QList<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8};
 
-    QStringList dispmodel1;
-    dispmodel1<<("D device align")<<("P die align");
-    Group *widget_1 = new Group(2, ":/images/test_image/image_3.png", ":/images/test_image/image_4.png", dispmodel1, this);
-    layout->addWidget(widget_1);
+    QList<Group*> widgets;
 
-    QStringList dispmodel2;
-    dispmodel2<<("B device align")<<("P die align");
-    Group *widget_2 = new Group(3, ":/images/test_image/image_5.png", ":/images/test_image/image_6.png", dispmodel2, this);
-    layout->addWidget(widget_2);
+    for (int i = 0; i < numbers.size(); ++i) {
+        int num = numbers[i];
+        CameraImageHandler* manager = new CameraImageHandler(num);
+        Group* widget = manager->getGroup();
 
-    QStringList dispmodel3;
-    dispmodel3<<("U die align")<<("D device align");
-    Group *widget_3 = new Group(4, ":/images/test_image/image_7.png", ":/images/test_image/image_8.png", dispmodel3, this);
-    layout->addWidget(widget_3);
+        if (widget != nullptr) {
+            layout->addWidget(widget);
+            widgets.append(widget);
+        }
 
-    Group *widget_4 = new Group(5, ":/images/test_image/image.png", ":/images/test_image/image_2.png", dispmodel, this);
-    layout->addWidget(widget_4);
+        delete manager;
+    }
 
+    // 设置控件的最小高度和最大宽度
     int minHeight = 162;
     int maxWidth = 244;
-    QWidgetList widgets = {widget, widget_1, widget_2, widget_3, widget_4};
-    for (QWidget *w : widgets) {
+    for (Group* w : widgets) {
         w->setMinimumHeight(minHeight);
         w->setMaximumWidth(maxWidth);
     }
@@ -221,9 +215,7 @@ void SingleCameraOperationWnd::loadGroupSettings(int Id, int Index) {
 }
 
 void SingleCameraOperationWnd::on_ZoomUpButton_clicked() {
-    if (scaleFactor < 3.0) {
-        scaleFactor *= 1.1;
-    }
+    scaleFactor *= 1.1;
 
     int newWidth = currentPixmap.width() * scaleFactor;
     int newHeight = currentPixmap.height() * scaleFactor;
@@ -238,8 +230,12 @@ void SingleCameraOperationWnd::on_ZoomUpButton_clicked() {
 }
 
 void SingleCameraOperationWnd::on_ZoomOutButton_clicked() {
-    if (scaleFactor > 0.25) {
-        scaleFactor *= 0.9;
+    double newScaleFactor = scaleFactor * 0.9;
+
+    if (newScaleFactor >= 1.0) {
+        scaleFactor = newScaleFactor;
+    } else {
+        scaleFactor = 1.0;
     }
 
     int newWidth = currentPixmap.width() * scaleFactor;
@@ -258,12 +254,15 @@ void SingleCameraOperationWnd::wheelEvent(QWheelEvent *event) {
     // 检查鼠标事件是否发生在 Operatewidget 上
     if (ui->Operatewidget->rect().contains(ui->Operatewidget->mapFromGlobal(event->globalPos()))) {
         if (event->angleDelta().y() > 0) {
-            if (scaleFactor < 3.0) {
-                scaleFactor *= 1.1;
-            }
+            scaleFactor *= 1.1;
         } else {
-            if (scaleFactor > 0.25) {
-                scaleFactor *= 0.9;
+            double newScaleFactor = scaleFactor * 0.9;
+
+            // 确保新的缩放因子不小于1.0(即图片的原始大小)
+            if (newScaleFactor >= 1.0) {
+                scaleFactor = newScaleFactor;
+            } else {
+                scaleFactor = 1.0;  // 如果新的缩放因子小于1.0,则直接设置为1.0
             }
         }
 

+ 2 - 0
SBTdie-bonder-ui.pro

@@ -10,6 +10,7 @@ CONFIG += c++17
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
 SOURCES += \
+    CameraImage/CameraImageHandler.cpp \
     Group.cpp \
     ImageWidget.cpp \
     ImageWidget_nodrag.cpp \
@@ -24,6 +25,7 @@ SOURCES += \
     MainWnd.cpp \
 
 HEADERS += \
+    CameraImage/CameraImageHandler.h \
     Group.h \
     ImageWidget.h \
     ImageWidget_nodrag.h \

+ 31 - 28
SBTdie-bonder-ui.pro.user

@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 15.0.0, 2025-01-06T17:19:45. -->
+<!-- Written by QtCreator 14.0.2, 2025-01-09T11:28:53. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
-  <value type="QByteArray">{f2ab8eff-3fdd-4b92-9bff-1d8cb181cb85}</value>
+  <value type="QByteArray">{18ca618c-d623-4564-b8b0-9ee73c53f748}</value>
  </data>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>
-  <value type="qlonglong">0</value>
+  <value type="qlonglong">1</value>
  </data>
  <data>
   <variable>ProjectExplorer.Project.EditorSettings</variable>
@@ -33,7 +33,6 @@
    <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
    <value type="int" key="EditorConfiguration.IndentSize">4</value>
    <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
-   <value type="int" key="EditorConfiguration.LineEndingBehavior">1</value>
    <value type="int" key="EditorConfiguration.MarginColumn">80</value>
    <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
    <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
@@ -49,7 +48,7 @@
    <value type="int" key="EditorConfiguration.TabSize">8</value>
    <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
    <value type="bool" key="EditorConfiguration.UseIndenter">false</value>
-   <value type="int" key="EditorConfiguration.Utf8BomBehavior">0</value>
+   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
    <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
    <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
    <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
@@ -86,6 +85,9 @@
     <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
     <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
    </valuemap>
+   <valuemap type="QVariantMap" key="CppEditor.QuickFix">
+    <value type="bool" key="UseGlobalSettings">true</value>
+   </valuemap>
   </valuemap>
  </data>
  <data>
@@ -97,11 +99,11 @@
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
    <value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
    <value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
-   <value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">1</value>
+   <value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
     <value type="int" key="EnableQmlDebugging">0</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\David\Desktop\build</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/David/Desktop/build</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\qt\234\die-bonder-ui\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/qt/234/die-bonder-ui/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
      <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
       <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -139,8 +141,8 @@
     <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\David\Desktop\1230dev1\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/David/Desktop/1230dev1/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\qt\3\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/qt/3/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
      <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
       <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -180,8 +182,8 @@
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
     <value type="int" key="EnableQmlDebugging">0</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\David\Desktop\1230dev1\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/David/Desktop/1230dev1/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\qt\3\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/qt/3/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
      <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
       <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -246,8 +248,8 @@
     <value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
     <value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">SBTdie-bonder-ui2</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
-    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Users/David/Desktop/1230dev2/die-bonder-ui/SBTdie-bonder-ui.pro</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/qt/999/die-bonder-ui/SBTdie-bonder-ui.pro</value>
+    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/qt/999/die-bonder-ui/SBTdie-bonder-ui.pro</value>
     <value type="bool" key="ProjectExplorer.RunConfiguration.Customized">true</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
     <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
@@ -265,13 +267,13 @@
     <value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
     <value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
-    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Users/David/Desktop/11/die-bonder-ui/die-bonder-ui/SBTdie-bonder-ui.pro</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/qt/234/die-bonder-ui/die-bonder-ui/SBTdie-bonder-ui.pro</value>
+    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/qt/234/die-bonder-ui/die-bonder-ui/SBTdie-bonder-ui.pro</value>
     <value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
     <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
     <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-    <value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/Users/David/Desktop/build</value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/qt/234/die-bonder-ui/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
    </valuemap>
    <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
   </valuemap>
@@ -280,16 +282,16 @@
   <variable>ProjectExplorer.Project.Target.1</variable>
   <valuemap type="QVariantMap">
    <value type="QString" key="DeviceType">Desktop</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MSVC2019 32bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MSVC2019 32bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win32_msvc2019_kit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MSVC2019 64bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MSVC2019 64bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_msvc2019_64_kit</value>
    <value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
    <value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
    <value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
     <value type="int" key="EnableQmlDebugging">0</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\David\Desktop\1230dev1\die-bonder-ui\build\Desktop_Qt_5_15_2_MSVC2019_32bit-Debug</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/David/Desktop/1230dev1/die-bonder-ui/build/Desktop_Qt_5_15_2_MSVC2019_32bit-Debug</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\qt\234\die-bonder-ui\die-bonder-ui\build\Desktop_Qt_5_15_2_MSVC2019_64bit-Debug</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/qt/234/die-bonder-ui/die-bonder-ui/build/Desktop_Qt_5_15_2_MSVC2019_64bit-Debug</value>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
      <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
       <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -327,8 +329,8 @@
     <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\David\Desktop\1230dev1\die-bonder-ui\build\Desktop_Qt_5_15_2_MSVC2019_32bit-Release</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/David/Desktop/1230dev1/die-bonder-ui/build/Desktop_Qt_5_15_2_MSVC2019_32bit-Release</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\qt\234\die-bonder-ui\die-bonder-ui\build\Desktop_Qt_5_15_2_MSVC2019_64bit-Release</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/qt/234/die-bonder-ui/die-bonder-ui/build/Desktop_Qt_5_15_2_MSVC2019_64bit-Release</value>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
      <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
       <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -368,8 +370,8 @@
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
     <value type="int" key="EnableQmlDebugging">0</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\David\Desktop\1230dev1\die-bonder-ui\build\Desktop_Qt_5_15_2_MSVC2019_32bit-Profile</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/David/Desktop/1230dev1/die-bonder-ui/build/Desktop_Qt_5_15_2_MSVC2019_32bit-Profile</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\qt\234\die-bonder-ui\die-bonder-ui\build\Desktop_Qt_5_15_2_MSVC2019_64bit-Profile</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/qt/234/die-bonder-ui/die-bonder-ui/build/Desktop_Qt_5_15_2_MSVC2019_64bit-Profile</value>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
      <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
       <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -434,12 +436,13 @@
     <value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
     <value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
-    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Users/David/Desktop/1230dev1/die-bonder-ui/SBTdie-bonder-ui.pro</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/qt/234/die-bonder-ui/die-bonder-ui/SBTdie-bonder-ui.pro</value>
+    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/qt/234/die-bonder-ui/die-bonder-ui/SBTdie-bonder-ui.pro</value>
     <value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
     <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
     <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/qt/234/die-bonder-ui/die-bonder-ui/build/Desktop_Qt_5_15_2_MSVC2019_64bit-Debug</value>
    </valuemap>
    <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
   </valuemap>