Răsfoiți Sursa

add vedio and wafer function and fix some bugs

Change-Id: I3c97cff535495c0f847dde6b4280d5be6106aab8
ren_chaolun* 4 luni în urmă
părinte
comite
3366e1a4c2

+ 91 - 5
CameraMaterialGroupWnd/Group.cpp

@@ -6,8 +6,13 @@
 #include <QVBoxLayout>
 #include <QLabel>
 
+// 静态变量初始化
+Group* Group::currentlySelectedGroup = nullptr;
+Group* Group::previouslySelectedBlueGroup = nullptr;
+Group* Group::lastClickedGroup = nullptr;
+int Group::lastClickedIndex = 0;
 Group::Group(int Id, const QString& imagePath1, int MaterialWindowType, const QStringList& textList, QWidget* parent)
-    : QWidget(parent), ui(new Ui::Group) {
+    : QWidget(parent), ui(new Ui::Group),currentGroupId(Id) {
     ui->setupUi(this);
 
     QPixmap pixmap1(imagePath1);
@@ -29,15 +34,20 @@ Group::Group(int Id, const QString& imagePath1, int MaterialWindowType, const QS
         wafer = new Wafer(0, ui->Imagewidget_right);
         WaferWidget();
     } else if (MaterialWindowType == 2) {
+		waffle = new Waffle(0, ui->Imagewidget_right);
         WaffleWidget();
     } else if (MaterialWindowType == 3) {
+		materialbox = new MaterialBox(0, ui->Imagewidget_right);
         MaterialBoxWidget();
     }
 
     // 存储参数到 QSettings
     saveGroupSettings(Id, imagePath1, MaterialWindowType, textList);
     connect(ui->GroupButton,&QPushButton::clicked,this,&Group::onclickbutton);
+    connect(ui->DatacomboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
+            this, &Group::on_DatacomboBox_currentIndexChanged);
     initForm();
+	connect(this, &Group::groupSelected, this, &Group::onGroupSelected);
 }
 
 Group::~Group() {
@@ -56,17 +66,31 @@ bool Group::eventFilter(QObject *obj, QEvent *event) {
             int groupId = obj->property("groupId").toInt();
             QSettings settings("YourCompany", "YourApplication_");
             settings.setValue("GroupId", groupId);
+			int index = 0;
             if (obj == this->ui->Imagewidget_left) {
+				index = 1;
                 settings.setValue("Index", 1);
+				check_selected(1);
             } else if (obj == this->ui->Imagewidget_right) {
+				index = 2;
                 settings.setValue("Index", 2);
+				check_selected(2);
             }
+			emit groupSelected(this, index);
             return true;
         }
     }
     return QWidget::eventFilter(obj, event);
 }
 
+void Group::check_selected(int index)
+{
+    if (index == 1) {
+        ui->leftBackground->setStyleSheet("border: 2px solid red;");
+    } else if (index == 2) {
+        ui->rightBackground->setStyleSheet("border: 2px solid red;");
+    }
+}
 void Group::saveGroupSettings(int Id, const QString& imagePath1, int materialWndType, const QStringList& textList) {
     QSettings settings("YourOrganization", "YourApplication");
     settings.beginGroup(QString::number(Id));
@@ -85,7 +109,7 @@ void Group::WaferWidget() {
     pixmapLabel->setPixmap(wafer->getGlobalPixmap());
 
     ui->Imagewidget_right->setLayout(layout2);
-    ui->Imagewidget_right->setFixedSize(114, 114);
+    ui->Imagewidget_right->setFixedSize(110, 110);
     layout2->setContentsMargins(0, 0, 0, 0);
     layout2->addWidget(pixmapLabel);
 }
@@ -96,7 +120,7 @@ void Group::WaffleWidget() {
     waffle = new Waffle(0, ui->Imagewidget_right);
 
     ui->Imagewidget_right->setLayout(layout2);
-    ui->Imagewidget_right->setFixedSize(114, 114);
+    ui->Imagewidget_right->setFixedSize(110, 110);
     layout2->setContentsMargins(0, 0, 0, 0);
     layout2->addWidget(waffle);
 }
@@ -107,11 +131,73 @@ void Group::MaterialBoxWidget() {
     materialbox = new MaterialBox(0, ui->Imagewidget_right);
 
     ui->Imagewidget_right->setLayout(layout2);
-    ui->Imagewidget_right->setFixedSize(114, 114);
+    ui->Imagewidget_right->setFixedSize(110, 110);
     layout2->setContentsMargins(0, 0, 0, 0);
     layout2->addWidget(materialbox);
 }
 
 void Group::onclickbutton(){
-    sendSignal();
+    emit send_button_Signal();
+}
+
+void Group::setDatacomboBox(int index){
+    ui->DatacomboBox->setCurrentIndex(index);
+}
+
+void Group::on_DatacomboBox_currentIndexChanged(int index){
+    send_ComboBox_singal(currentGroupId,index);
 }
+
+void Group::onGroupSelected(Group* group, int index)
+{
+    QSettings settings("OrganizationName__", "ApplicationName__");
+    int lastSavedIndex = settings.value("lastIndex", 1).toInt();
+
+    // 清除当前红色边框
+    if (currentlySelectedGroup != nullptr) {
+        currentlySelectedGroup->ui->leftBackground->setStyleSheet("");
+        currentlySelectedGroup->ui->rightBackground->setStyleSheet("");
+    }
+
+    // 清除当前蓝色边框
+    if (previouslySelectedBlueGroup != nullptr) {
+        previouslySelectedBlueGroup->ui->leftBackground->setStyleSheet("");
+        previouslySelectedBlueGroup->ui->rightBackground->setStyleSheet("");
+    }
+
+    if (lastSavedIndex == 1 || lastSavedIndex == 3) {
+        // 仅当前选中设为红色,蓝色边框清空
+        previouslySelectedBlueGroup = nullptr;
+    } else if (lastSavedIndex == 2) {
+        // 当前选中设为红色,上一个选中设为蓝色
+        if (lastClickedGroup != nullptr) {
+            QString blueBorderStyle = "border: 2px solid blue;";
+            // 即使是同一个实例,只要索引不同就设置蓝色边框
+            if (lastClickedGroup == group && lastClickedIndex != index) {
+                if (lastClickedIndex == 1) {
+                    lastClickedGroup->ui->leftBackground->setStyleSheet(blueBorderStyle);
+                } else if (lastClickedIndex == 2) {
+                    lastClickedGroup->ui->rightBackground->setStyleSheet(blueBorderStyle);
+                }
+                previouslySelectedBlueGroup = lastClickedGroup;
+            } else if (lastClickedGroup != group) {
+                if (lastClickedIndex == 1) {
+                    lastClickedGroup->ui->leftBackground->setStyleSheet(blueBorderStyle);
+                } else if (lastClickedIndex == 2) {
+                    lastClickedGroup->ui->rightBackground->setStyleSheet(blueBorderStyle);
+                }
+                previouslySelectedBlueGroup = lastClickedGroup;
+            }
+        }
+    }
+
+    // 更新当前选中的 Group 实例
+    currentlySelectedGroup = group;
+    // 将当前选中的边框设为红色
+    group->check_selected(index);
+
+    // 更新上一次点击的记录
+    lastClickedGroup = group;
+    lastClickedIndex = index;
+}
+

+ 16 - 2
CameraMaterialGroupWnd/Group.h

@@ -2,6 +2,7 @@
 #define GROUP_H
 
 #include <QWidget>
+#include <QtWidgets/QComboBox>
 #include "CameraMaterialGroupWnd/MaterialWindow/Wafer.h"
 #include "CameraMaterialGroupWnd/MaterialWindow/Waffle.h"
 #include "CameraMaterialGroupWnd/MaterialWindow/MaterialBox.h"
@@ -22,22 +23,35 @@ public:
     void initForm();
     bool eventFilter(QObject *obj, QEvent *event);
     void saveGroupSettings(int Id, const QString& imagePath1, int materialWndType, const QStringList& textList);
+	void saveBorderSettings();  // 新增:保存边框颜色信息
+    void loadBorderSettings();  // 新增:加载边框颜色信息
+    void setDatacomboBox(int index);
 
 signals:
-    void sendSignal();
+    void send_button_Signal();
+    void send_ComboBox_singal(int groupId,int index);
+	void groupSelected(Group* group, int index);
 public slots:
     void onclickbutton();
+    void on_DatacomboBox_currentIndexChanged(int index);
+	void onGroupSelected(Group* group, int index);
 protected:
+    void check_selected(int index);
     void WaferWidget(); // 圆晶
     void WaffleWidget(); // 华夫盒
     void MaterialBoxWidget(); // 料盒
 
 private:
     Ui::Group *ui;
-
+    int currentGroupId;
     Wafer *wafer; // 声明Wafer指针
     Waffle *waffle; // 声明Waffle指针
     MaterialBox *materialbox; // 声明materialbox指针
+	static Group* currentlySelectedGroup; // 当前选中(红色边框)的实例
+    static Group* previouslySelectedBlueGroup; // 上一次选中且边框为蓝色的实例
+    static Group* lastClickedGroup; // 上一次点击的实例
+    static int lastClickedIndex; // 上一次点击的索引
+    int groupId;  // 新增:记录当前 Group 的 ID
 };
 
 #endif // GROUP_H

+ 35 - 11
CameraMaterialGroupWnd/Group.ui

@@ -16,10 +16,10 @@
   <widget class="ImageWidget_nodrag" name="Imagewidget_left" native="true">
    <property name="geometry">
     <rect>
-     <x>0</x>
-     <y>48</y>
-     <width>114</width>
-     <height>114</height>
+     <x>2</x>
+     <y>50</y>
+     <width>110</width>
+     <height>110</height>
     </rect>
    </property>
    <property name="styleSheet">
@@ -40,7 +40,6 @@
    </property>
   </widget>
   <widget class="QPushButton" name="GroupButton">
-
    <property name="geometry">
     <rect>
      <x>184</x>
@@ -53,29 +52,54 @@
     <string/>
    </property>
   </widget>
-
   <widget class="ImageWidget_nodrag" name="Imagewidget_right" native="true">
-
    <property name="geometry">
     <rect>
-     <x>130</x>
+     <x>132</x>
+     <y>50</y>
+     <width>110</width>
+     <height>110</height>
+    </rect>
+   </property>
+   <property name="styleSheet">
+    <string notr="true">background-color: rgb(0, 170, 127);</string>
+   </property>
+  </widget>
+  <widget class="QWidget" name="leftBackground" native="true">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
      <y>48</y>
      <width>114</width>
      <height>114</height>
     </rect>
    </property>
    <property name="styleSheet">
-    <string notr="true">background-color: rgb(0, 170, 127);</string>
+    <string notr="true"/>
+   </property>
+  </widget>
+  <widget class="QWidget" name="rightBackground" native="true">
+   <property name="geometry">
+    <rect>
+     <x>130</x>
+     <y>48</y>
+     <width>114</width>
+     <height>114</height>
+    </rect>
    </property>
   </widget>
+  <zorder>rightBackground</zorder>
+  <zorder>Imagewidget_right</zorder>
+  <zorder>leftBackground</zorder>
+  <zorder>Imagewidget_left</zorder>
+  <zorder>DatacomboBox</zorder>
+  <zorder>GroupButton</zorder>
  </widget>
  <customwidgets>
   <customwidget>
-
    <class>ImageWidget_nodrag</class>
    <extends>QWidget</extends>
    <header location="global">ImageWidget_nodrag.h</header>
-
    <container>1</container>
   </customwidget>
  </customwidgets>

+ 65 - 1
CameraMaterialGroupWnd/MaterialWindow/DieItem.cpp

@@ -1,5 +1,4 @@
 #include "DieItem.h"
-#include <QPen>
 
 DieItem::DieItem(int row, int col, PICK_DIE_STATUS status, qreal size, QGraphicsItem* parent)
     : QGraphicsRectItem(parent), row(row), col(col), status(status) {
@@ -10,6 +9,47 @@ DieItem::DieItem(int row, int col, PICK_DIE_STATUS status, qreal size, QGraphics
     setPen(QPen(QColor(0, 0, 0), 0.5)); // 黑色边框,宽度为0.5
 }
 
+void DieItem::setSelected(bool selected) {
+    if (selected) {
+        setPen(QPen(Qt::green, 1));  // 选中时边框变为绿色
+    } else {
+        setPen(QPen(Qt::black, 0.5));  // 未选中时恢复为黑色边框
+    }
+    qDebug() << "DieItem clicked: Row:" << row << "Col:" << col;
+}
+
+// void DieItem::mousePressEvent(QGraphicsSceneMouseEvent *event) {
+//     if (event->button() == Qt::LeftButton) {
+//         // isSelected = !isSelected;  // 切换选中状态
+//         // setSelected(isSelected);  // 更新边框颜色
+//         // 获取当前图形项的包围矩形
+//         QRectF itemRect = boundingRect();
+//         QPointF center = itemRect.center();  // 矩形的中心点
+
+//         // 计算新的矩形尺寸(长宽的 95%)
+//         qreal newWidth = itemRect.width() * 0.95;
+//         qreal newHeight = itemRect.height() * 0.95;
+
+//         // 计算新的矩形的左上角位置,使其保持原中心位置
+//         qreal newX = center.x() - newWidth / 2;
+//         qreal newY = center.y() - newHeight / 2;
+
+//         // 创建新的矩形,作为响应区域
+//         QRectF validArea(newX, newY, newWidth, newHeight);
+
+//         // 获取鼠标点击位置
+//         QPointF clickPos = event->pos();
+
+//         // 判断点击位置是否在新的矩形区域内
+//         if (validArea.contains(clickPos)) {
+//             // 如果点击在有效区域内,则切换选中状态
+//             isSelected = !isSelected;  // 切换选中状态
+//             setSelected(isSelected);   // 更新边框颜色
+//         }
+//     }
+//     QGraphicsRectItem::mousePressEvent(event);  // 调用基类的事件处理
+// }
+
 QColor DieItem::getColorByStatus(PICK_DIE_STATUS status) {
     switch (status) {
     case DIE_EXIST: return QColor(0, 102, 255); // 蓝色
@@ -28,3 +68,27 @@ int DieItem::getRow() const {
 int DieItem::getCol() const {
     return col;
 }
+
+// void DieItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {
+//     // 创建右键菜单
+//     QMenu menu;
+//     QAction *action1 = menu.addAction("菜单项 1");
+//     QAction *action2 = menu.addAction("菜单项 2");
+
+//     // 连接菜单项的信号和槽
+//     connect(action1, &QAction::triggered, this, &DieItem::handleAction1);
+//     connect(action2, &QAction::triggered, this, &DieItem::handleAction2);
+
+//     // 显示菜单
+//     menu.exec(event->screenPos());
+// }
+
+// void DieItem::handleAction1() {
+//     // 处理菜单项 1 的逻辑
+//     qDebug() << "菜单项 1 被点击";
+// }
+
+// void DieItem::handleAction2() {
+//     // 处理菜单项 2 的逻辑
+//     qDebug() << "菜单项 2 被点击";
+// }

+ 15 - 1
CameraMaterialGroupWnd/MaterialWindow/DieItem.h

@@ -3,6 +3,10 @@
 
 #include <QGraphicsRectItem>
 #include <QColor>
+#include <QDebug>
+#include <QPen>
+#include <QMenu>
+#include <QGraphicsSceneContextMenuEvent>
 
 enum PICK_DIE_STATUS {
     DIE_EXIST,/*原来的*/
@@ -13,7 +17,7 @@ enum PICK_DIE_STATUS {
 };
 
 // 自定义矩形代表晶圆单元格
-class DieItem : public QGraphicsRectItem {
+class DieItem : public QObject, public QGraphicsRectItem {
 public:
     DieItem(int row, int col, PICK_DIE_STATUS status, qreal size, QGraphicsItem* parent = nullptr);
 
@@ -21,12 +25,22 @@ public:
     int getRow() const;
     int getCol() const;
 
+    void setSelected(bool selected);
+
+protected:
+           // void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
+           // void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;
+
 private:
     int row, col;
     PICK_DIE_STATUS status;
+    bool isSelected = false;
 
     // 获取单元格状态颜色
     QColor getColorByStatus(PICK_DIE_STATUS status);
+
+    // void handleAction1();
+    // void handleAction2();
 };
 
 #endif // DIEITEM_H

+ 0 - 1
CameraMaterialGroupWnd/MaterialWindow/Wafer.h

@@ -34,7 +34,6 @@ public:
     void initFrom(QWidget *parent);
     void paintInitFrom(QWidget *parent);
     QPixmap getGlobalPixmap() const;
-    QWidget *globalWidget;
 
     QColor getColorByStatus(PICK_DIE_STATUS status);
     QGraphicsScene* scene;

+ 100 - 56
CameraMaterialGroupWnd/MaterialWindow/WaferGraphicsView.cpp

@@ -1,75 +1,119 @@
 #include "WaferGraphicsView.h"
 #include <QDebug>
+#include <QScrollBar>
 
 WaferGraphicsView::WaferGraphicsView(QGraphicsScene* scene, QWidget* parent)
     : QGraphicsView(scene, parent), selecting(false), selectionRect(nullptr), scaleFactor(1.0) {
     setRenderHint(QPainter::Antialiasing);
-    setDragMode(QGraphicsView::ScrollHandDrag); // 支持拖动视图
+    // setDragMode(QGraphicsView::ScrollHandDrag); // 支持拖动视图
+    setTransformationAnchor(QGraphicsView::AnchorUnderMouse); // 缩放时以鼠标为中心
 }
 
-// void WaferGraphicsView::mousePressEvent(QMouseEvent* event) {
-//     if (event->button() == Qt::LeftButton) {
-//         // 开始框选
-//         selecting = true;
-//         selectionStart = mapToScene(event->pos());
-//         if (!selectionRect) {
-//             selectionRect = new QGraphicsRectItem();
-//             selectionRect->setPen(QPen(Qt::DashLine));
-//             selectionRect->setBrush(QBrush(QColor(0, 0, 255, 50))); // 半透明蓝色
-//             scene()->addItem(selectionRect);
-//         }
-//         selectionRect->setRect(QRectF(selectionStart, QSizeF()));
-//     }
-//     QGraphicsView::mousePressEvent(event);
-// }
+void WaferGraphicsView::mousePressEvent(QMouseEvent* event) {
+    if (event->button() == Qt::LeftButton) {
+        // 清空选中的 DieItem
+        for (auto& item : selectedItemsMap) {
+            DieItem* die = dynamic_cast<DieItem*>(item);
+            if (die) {
+                die->setSelected(false); // 取消选中状态
+            }
+        }
+        selectedItemsMap.clear();
 
-// void WaferGraphicsView::mouseMoveEvent(QMouseEvent* event) {
-//     if (selecting && selectionRect) {
-//         QPointF currentPos = mapToScene(event->pos());
-//         selectionRect->setRect(QRectF(selectionStart, currentPos).normalized());
-//     }
-//     QGraphicsView::mouseMoveEvent(event);
-// }
+        // 获取点击位置的 DieItem
+        QGraphicsItem* item = itemAt(event->pos());
+        DieItem* die = dynamic_cast<DieItem*>(item);
+        if (die) {
+            // 将 DieItem 添加到 map 中
+            selectedItemsMap.insert(qMakePair(die->getRow(), die->getCol()), die);
+            die->setSelected(true); // 设置选中状态
+        }
 
-// void WaferGraphicsView::mouseReleaseEvent(QMouseEvent* event) {
-//     if (event->button() == Qt::LeftButton && selecting) {
-//         selecting = false;
-//         if (selectionRect) {
-//             QRectF selectedArea = selectionRect->rect();
-//             scene()->removeItem(selectionRect);
-//             delete selectionRect;
-//             selectionRect = nullptr;
+        setCursor(Qt::OpenHandCursor);  // 按下时设置为小手
+        selecting = true;
+        lastPos = event->pos();  // 记录鼠标位置
+    } else if (event->button() == Qt::RightButton) {
+        // 开始框选
+        selecting = true;
+        selectionStart = mapToScene(event->pos());
+        isDragging = false;
+        if (!selectionRect) {
+            selectionRect = new QGraphicsRectItem();
+            selectionRect->setPen(QPen(Qt::NoPen));
+            selectionRect->setBrush(QBrush(QColor(0, 0, 255, 50))); // 半透明蓝色
+            scene()->addItem(selectionRect);
+        }
+        selectionRect->setRect(QRectF(selectionStart, QSizeF()));
+    }
+    QGraphicsView::mousePressEvent(event);
+}
 
-//             // 输出选中区域内的晶圆信息
-//             QList<QGraphicsItem*> items = scene()->items(selectedArea, Qt::IntersectsItemShape);
-//             qDebug() << "Selected Dies:";
-//             for (QGraphicsItem* item : items) {
-//                 DieItem* die = dynamic_cast<DieItem*>(item);
-//                 if (die) {
-//                     qDebug() << "Row:" << die->getRow() << "Col:" << die->getCol();
-//                 }
-//             }
-//         }
-//     }
-//     QGraphicsView::mouseReleaseEvent(event);
-// }
+void WaferGraphicsView::mouseMoveEvent(QMouseEvent* event) {
+    if (selecting && selectionRect) {
+        QPointF currentPos = mapToScene(event->pos());
+        selectionRect->setRect(QRectF(selectionStart, currentPos).normalized());
+        isDragging = true;
+    } else if (selecting) {
+        // 计算鼠标当前位置与上次位置的差值
+        QPointF delta = event->pos() - lastPos;
+        // 平移视图
+        horizontalScrollBar()->setValue(horizontalScrollBar()->value() - delta.x());
+        verticalScrollBar()->setValue(verticalScrollBar()->value() - delta.y());
+        lastPos = event->pos();  // 更新鼠标位置
+    }
+    QGraphicsView::mouseMoveEvent(event);
+}
 
-void WaferGraphicsView::wheelEvent(QWheelEvent* event) {
-    const double zoomFactor = 1.1; // 每次缩放的倍率
-    const double minScale = 1;
-    const double maxScale = 10.0;
+void WaferGraphicsView::mouseReleaseEvent(QMouseEvent* event) {
+    if (event->button() == Qt::LeftButton) {
+        setCursor(Qt::ArrowCursor);  // 松开时恢复为箭头
+        selecting = false;
+    } else if (event->button() == Qt::RightButton && selecting) {
+        selecting = false;
+        if (selectionRect) {
+            QRectF selectedArea = selectionRect->rect();
+            scene()->removeItem(selectionRect);
+            delete selectionRect;
+            selectionRect = nullptr;
 
-    if (event->angleDelta().y() > 0) {
-        if (scaleFactor < maxScale) {
-            scale(zoomFactor, zoomFactor);
-            scaleFactor *= zoomFactor;
+            QList<QGraphicsItem*> items = scene()->items(selectedArea, Qt::IntersectsItemShape);
+            for (QGraphicsItem* item : items) {
+                DieItem* die = dynamic_cast<DieItem*>(item);
+                if (die) {
+                    // 将 DieItem 添加到 map 中
+                    selectedItemsMap.insert(qMakePair(die->getRow(), die->getCol()), die);
+                    die->setSelected(true); // 设置选中状态
+                }
+            }
         }
-    } else {
-        if (scaleFactor > minScale) {
-            scale(1.0 / zoomFactor, 1.0 / zoomFactor);
-            scaleFactor /= zoomFactor;
+        // 如果没有进行拖动,则弹出右键菜单
+        if (!isDragging) {
+            QMenu menu;
+            QAction* action1 = menu.addAction("菜单项 1");
+            QAction* action2 = menu.addAction("菜单项 2");
+
+            connect(action1, &QAction::triggered, this, &WaferGraphicsView::handleAction1);
+            connect(action2, &QAction::triggered, this, &WaferGraphicsView::handleAction2);
+
+            menu.exec(event->globalPos());
         }
     }
+    QGraphicsView::mouseReleaseEvent(event);
+}
 
+void WaferGraphicsView::wheelEvent(QWheelEvent* event) {
+    if (event->orientation() == Qt::Vertical) {
+        event->ignore(); // 忽略竖直滚轮事件(即禁用滚动条滑动)
+        return;
+    }
     event->accept();
 }
+
+// 处理右键菜单的动作
+void WaferGraphicsView::handleAction1() {
+    qDebug() << "菜单项 1 被点击";
+}
+
+void WaferGraphicsView::handleAction2() {
+    qDebug() << "菜单项 2 被点击";
+}

+ 8 - 3
CameraMaterialGroupWnd/MaterialWindow/WaferGraphicsView.h

@@ -12,18 +12,23 @@ class WaferGraphicsView : public QGraphicsView {
 
 public:
     WaferGraphicsView(QGraphicsScene* scene, QWidget* parent = nullptr);
+    void handleAction1();
+    void handleAction2();
 
 protected:
-    // void mousePressEvent(QMouseEvent* event) override;
-    // void mouseMoveEvent(QMouseEvent* event) override;
-    // void mouseReleaseEvent(QMouseEvent* event) override;
+    void mousePressEvent(QMouseEvent* event) override;
+    void mouseMoveEvent(QMouseEvent* event) override;
+    void mouseReleaseEvent(QMouseEvent* event) override;
     void wheelEvent(QWheelEvent* event) override;
 
 private:
     bool selecting; // 是否正在框选
+    QPoint lastPos;
     QPointF selectionStart; // 框选起点
     QGraphicsRectItem* selectionRect; // 框选矩形
     double scaleFactor; // 当前缩放比例
+    bool isDragging = false;
+    QMap<QPair<int, int>, QGraphicsItem*> selectedItemsMap;
 };
 
 #endif // WAFERGRAPHICSVIEW_H

+ 30 - 9
ImageWidget.cpp

@@ -19,23 +19,44 @@ ImageWidget::~ImageWidget()
 void ImageWidget::setPixmap(const QPixmap& newPixmap) {
     this->pixmap = newPixmap;
     imageOffset = QPoint(0, 0); // 重置图片偏移量为(0, 0)
+    setCursor(Qt::ArrowCursor);
     update(); // 触发重绘
 }
-void ImageWidget::setPixmapAndPoint(const QPixmap& pixmap){
+void ImageWidget::setPixmapAndPoint(const QPixmap& pixmap, double previousScaleFactor, qreal scaleFactor, QPoint mousePos) {
     this->pixmap = pixmap;
+    QPointF imagePos = (mousePos - imageOffset) / previousScaleFactor;
+    imageOffset = mousePos - imagePos * scaleFactor;
     update();
 }
+void ImageWidget::clearPixmap() {
+    this->pixmap = QPixmap(); // 将 pixmap 设置为空
+    update(); // 触发重绘
+}
 void ImageWidget::paintEvent(QPaintEvent *event) {
     QPainter painter(this);
     if (!pixmap.isNull()) {
-        // 计算图片左上角坐标,使得图片中心与控件中心对齐
-        int centerX = width() / 2;
-        int centerY = height() / 2;
-        int pixmapCenterX = pixmap.width() / 2;
-        int pixmapCenterY = pixmap.height() / 2;
-        int x = centerX - pixmapCenterX + imageOffset.x();
-        int y = centerY - pixmapCenterY + imageOffset.y();
-        painter.drawPixmap(x, y, pixmap);
+        // 限制图片偏移量,确保图片不会被拖动到视图外
+        int pixmapWidth = pixmap.width();
+        int pixmapHeight = pixmap.height();
+        int widgetWidth = width();
+        int widgetHeight = height();
+
+        // 限制横向偏移量,确保图片不会超出左边或右边
+        if (pixmapWidth < widgetWidth) {
+            imageOffset.setX(0); // 如果图片宽度小于控件宽度,居中显示
+        } else {
+            // 图片左边界不能超出控件左边,右边界不能超出控件右边
+            imageOffset.setX(qMin(0.0, qMax(static_cast<qreal>(widgetWidth - pixmapWidth), imageOffset.x())));
+        }
+
+        // 限制纵向偏移量,确保图片不会超出上边或下边
+        if (pixmapHeight < widgetHeight) {
+            imageOffset.setY(0); // 如果图片高度小于控件高度,居中显示
+        } else {
+            // 图片上边界不能超出控件上边,下边界不能超出控件下边
+            imageOffset.setY(qMin(0.0, qMax(static_cast<qreal>(widgetHeight - pixmapHeight), imageOffset.y())));
+        }
+        painter.drawPixmap(imageOffset.x(), imageOffset.y(), pixmap);
     }
 }
 

+ 3 - 2
ImageWidget.h

@@ -18,7 +18,8 @@ public:
     ~ImageWidget();
 
     void setPixmap(const QPixmap& pixmap);
-    void setPixmapAndPoint(const QPixmap& pixmap);
+    void setPixmapAndPoint(const QPixmap& pixmap, double previousScaleFactor, qreal scaleFactor, QPoint mousePos);
+    void clearPixmap();
 signals:
     void sendDoubleClicksignal();
 protected:
@@ -31,7 +32,7 @@ private:
     Ui::ImageWidget *ui;
     QPixmap pixmap;
     QPoint lastMousePos;  // 上一次鼠标的位置
-    QPoint imageOffset;  // 图片的偏移量
+    QPointF imageOffset;  // 图片的偏移量
     bool isDragging;     // 是否正在拖动
 };
 

+ 155 - 0
OriginalWnd/CameraDataHandleAndShow.cpp

@@ -0,0 +1,155 @@
+#include "CameraDataHandleAndShow.h"
+void ImageGrabber::stop() {
+    m_running = false;
+};
+
+// long ImageGrabber::GrabImagetest(int iCameraId, ImageInfo& image){
+//     static QMutex mutex;
+//     QMutexLocker locker(&mutex);
+
+//     // 生成测试图像数据
+//     static int counter = 0;
+//     int width = 640;
+//     int height = 480;
+
+//     image.width = width;
+//     image.height = height;
+//     image.format = RGB888;
+//     image.channel = 3;
+
+//     static QByteArray buffer(width * height * 3, 0);
+//     unsigned char *ptr = reinterpret_cast<unsigned char*>(buffer.data());
+
+//     // 生成渐变测试图
+//     for(int y=0; y<height; ++y) {
+//         for(int x=0; x<width; ++x) {
+//             int offset = (y*width + x)*3;
+//             ptr[offset]   = x*255/width;            // R
+//             ptr[offset+1] = (x+y)*255/(width+height); // G
+//             ptr[offset+2] = y*255/height;           // B
+//         }
+//     }
+
+//     image.data = ptr;
+//     return 0;
+// }
+long ImageGrabber::GrabImagetest(int iCameraId, ImageInfo& image) {
+    static QMutex mutex;
+    QMutexLocker locker(&mutex);
+
+    // 动态控制变量(每次调用自增)
+    static int counter = 0;
+    counter = (counter + 1) % 1000;  // 防止溢出
+
+    const int width = 640;
+    const int height = 480;
+
+    // 生成动态测试图案(示例包含三种动态模式)
+    static QByteArray buffer(width * height * 3, 0);
+    unsigned char* ptr = reinterpret_cast<unsigned char*>(buffer.data());
+
+    for(int y = 0; y < height; ++y) {
+        for(int x = 0; x < width; ++x) {
+            int offset = (y * width + x) * 3;
+
+            // 模式1:水平移动的色带
+            int modulatedX = (x + counter) % width;
+
+            // 模式2:脉动中心圆
+            float dist = sqrt(pow(x-width/2,2) + pow(y-height/2,2));
+            float pulse = (sin(counter*0.1) + 1) * 50;
+
+            // 模式3:动态噪点
+            float noise = (rand() % 100)/100.0 * 50 * sin(counter*0.05);
+            // 强制类型转换解决浮点取模问题
+            ptr[offset]   = static_cast<int>(modulatedX*255/width + pulse + noise) % 256;  // R
+            ptr[offset+1] = static_cast<int>((x+y+counter)*255/(width+height) + noise) % 256; // G
+            ptr[offset+2] = static_cast<int>(y*255/height + pulse) % 256; // B
+
+        }
+    }
+
+    // 返回图像参数
+    image.width = width;
+    image.height = height;
+    image.format = RGB888;
+    image.channel = 3;
+    image.data = ptr;
+
+    return 0;
+}
+void ImageGrabber::run(){
+    while(m_running) {
+        ImageInfo imgInfo;
+        if(GrabImagetest(1, imgInfo) == 0) {
+            QImage image = convertImage(imgInfo);
+            emit imageGrabbed(image);
+        }
+        msleep(1000);
+    }
+}
+
+QImage ImageGrabber::convertImage(const ImageInfo &info) {
+    QImage::Format format = QImage::Format_Invalid;
+    switch(info.format) {
+    case GRAY8:   format = QImage::Format_Grayscale8; break;
+    case RGB888:  format = QImage::Format_RGB888; break;
+    case ARGB8888:format = QImage::Format_ARGB32; break;
+    case RGB32:   format = QImage::Format_RGB32; break;
+    case YUV422:  return convertYUV422ToRGB(info);
+    default:      return QImage();
+    }
+
+    return QImage(info.data, info.width, info.height,
+                  info.width * info.channel, format).copy();
+}
+
+QImage ImageGrabber::convertYUV422ToRGB(const ImageInfo &info) {
+    // 分配RGB数据的内存
+    QVector<unsigned char> rgbData(info.width * info.height * 3);
+    for (int y = 0; y < info.height; ++y) {
+        for (int x = 0; x < info.width; x += 2) {
+            // 计算YUV数据索引(每4字节处理2个像素)
+            int yuvIndex = y * info.width * 2 + x * 2;
+
+            // 提取YUV分量
+            unsigned char Y0 = info.data[yuvIndex];
+            unsigned char U  = info.data[yuvIndex + 1];
+            unsigned char Y1 = info.data[yuvIndex + 2];
+            unsigned char V  = info.data[yuvIndex + 3];
+
+            // 将U/V转换为有符号(-128~127)
+            float u = (float)U - 128.0f;
+            float v = (float)V - 128.0f;
+
+            // 处理第一个像素(Y0)
+            float yScaled = (Y0 - 16) * 1.164f; // Y分量归一化
+            int r = (int)(yScaled + 1.596f * v);
+            int g = (int)(yScaled - 0.391f * u - 0.813f * v);
+            int b = (int)(yScaled + 2.018f * u);
+
+            // 钳位并存储第一个像素
+            int rgbIndex = (y * info.width + x) * 3;
+            rgbData[rgbIndex]     = (unsigned char)(r < 0 ? 0 : r > 255 ? 255 : r);
+            rgbData[rgbIndex + 1] = (unsigned char)(g < 0 ? 0 : g > 255 ? 255 : g);
+            rgbData[rgbIndex + 2] = (unsigned char)(b < 0 ? 0 : b > 255 ? 255 : b);
+
+            // 处理第二个像素(Y1)
+            yScaled = (Y1 - 16) * 1.164f;
+            r = (int)(yScaled + 1.596f * v);
+            g = (int)(yScaled - 0.391f * u - 0.813f * v);
+            b = (int)(yScaled + 2.018f * u);
+
+            // 钳位并存储第二个像素
+            rgbIndex += 3; // 移动到下一个像素位置
+            if (x + 1 < info.width) { // 确保不越界
+                rgbData[rgbIndex]     = (unsigned char)(r < 0 ? 0 : r > 255 ? 255 : r);
+                rgbData[rgbIndex + 1] = (unsigned char)(g < 0 ? 0 : g > 255 ? 255 : g);
+                rgbData[rgbIndex + 2] = (unsigned char)(b < 0 ? 0 : b > 255 ? 255 : b);
+            }
+        }
+    }
+    // 创建QImage对象
+    QImage image(rgbData.data(), info.width, info.height, QImage::Format_RGB888);
+    return image;
+}

+ 33 - 0
OriginalWnd/CameraDataHandleAndShow.h

@@ -0,0 +1,33 @@
+#pragma once
+#ifndef CAMERADATAHANDLEANDSHOW_H
+#define CAMERADATAHANDLEANDSHOW_H
+
+#endif // CAMERADATAHANDLEANDSHOW_H
+#include <QtWidgets>
+#include <QThread>
+#include <QMutex>
+#include "CInterface.h"
+// 图像获取线程
+class ImageGrabber : public QThread {
+    Q_OBJECT
+public:
+    explicit ImageGrabber(int cameraId, QObject *parent = nullptr)
+        : QThread(parent), m_cameraId(cameraId), m_running(true) {}
+
+    void stop();
+    long GrabImagetest(int iCameraId, ImageInfo& image);
+
+signals:
+    void imageGrabbed(const QImage&image);
+
+protected:
+    void run() override;
+
+private:
+    QImage convertImage(const ImageInfo &info);
+
+    QImage convertYUV422ToRGB(const ImageInfo &info);
+
+    int m_cameraId;
+    bool m_running;
+};

+ 77 - 63
OriginalWnd/ChartsAndCamerasWnd.cpp

@@ -6,6 +6,7 @@
 #include <QTimer>
 #include "chartline.h"
 #include <QRandomGenerator>
+#include <QScrollBar>
 #include <qDebug>
 // #include "CInterface.h"
 #include "CameraMaterialGroupWnd/CameraImage/CameraImageHandler.h"
@@ -281,7 +282,7 @@ void ChartsAndCamerasWnd::initFrom() {
         int num = numbers[i];
         CameraImageHandler* manager = new CameraImageHandler(num);
         Group* widget = manager->getGroup();
-        connect(widget,&Group::sendSignal,this,&ChartsAndCamerasWnd::showAndHide);
+        connect(widget,&Group::send_button_Signal,this,&ChartsAndCamerasWnd::showAndHide);
         if (widget != nullptr) {
             layout->addWidget(widget);
             widgets.append(widget);
@@ -465,12 +466,32 @@ void ChartsAndCamerasWnd::loadGroupSettings(int Id, int Index) {
     QPixmap newPixmap;
     // 判断是实时图片还是物料窗口
     if (Index == 1) {
-        newPixmap = QPixmap(imagePath1);
         clearLayout();
+        newPixmap = QPixmap(imagePath1);
+        QPixmap scaledPixmap = newPixmap.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+        currentMode = ModeImage;
+        currentPixmap = scaledPixmap;
+        scaleFactor = 1.0;
+        previousScaleFactor = 1.0;
+        ui->Operatewidget->setPixmap(scaledPixmap);
+        double percentage = scaleFactor * 100;
+        QString percentageStr = QString::number((int)percentage);
+        ui->label_Percentage->setText(QString("%1%").arg(percentageStr));
     } else if (Index == 2) {
         if (materialWndType == 1) {
             clearLayout();
-            WaferWidget(Id);
+            // WaferWidget(Id);
+            ui->Operatewidget->clearPixmap();
+            QVBoxLayout *layout = new QVBoxLayout(ui->Operatewidget);
+            waferMap.value(Id)->initFrom(ui->Operatewidget);
+
+            layout->setContentsMargins(0, 0, 0, 0);
+            layout->addWidget(waferMap.value(Id)->view);
+            ui->Operatewidget->setLayout(layout);
+            currentMode = ModeView;
+            currentView = waferMap.value(Id)->view;
+            scaleFactor = 1.0;
+            applyScale();
         } else if (materialWndType == 2) {
             clearLayout();
             WaffleWidget();
@@ -480,13 +501,13 @@ void ChartsAndCamerasWnd::loadGroupSettings(int Id, int Index) {
         }
     }
 
-    QPixmap scaledPixmap = newPixmap.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
-    ui->Operatewidget->setPixmap(scaledPixmap);
+    // QPixmap scaledPixmap = newPixmap.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+    // ui->Operatewidget->setPixmap(scaledPixmap);
 
-    // 更新当前图片的成员变量
-    currentPixmap = scaledPixmap;
-    scaleFactor = 1.0;
-    ui->label_Percentage->setText("100%");
+    // // 更新当前图片的成员变量
+    // currentPixmap = scaledPixmap;
+    // scaleFactor = 1.0;
+    // ui->label_Percentage->setText("100%");
 
     ui->DatacomboBox->clear();
     ui->DatacomboBox->addItems(textList);
@@ -542,75 +563,75 @@ void ChartsAndCamerasWnd::MaterialBoxWidget() {
 }
 
 void ChartsAndCamerasWnd::handleDoubleClick(){
-    QPixmap scaledImage = currentPixmap.scaled(currentPixmap.width(), currentPixmap.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
-    ui->Operatewidget->setPixmap(scaledImage); // 这里传递缩放后的图片
+    if (currentMode == ModeImage) {
+        QPixmap scaledImage = currentPixmap.scaled(currentPixmap.width(), currentPixmap.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
+        ui->Operatewidget->setPixmap(scaledImage); // 这里传递缩放后的图片
+    } else if (currentMode == ModeView && currentView) {
+        QTransform transform;
+        transform.scale(1, 1);
+        currentView->setTransform(transform);
+    }
     scaleFactor = 1.0;
+    previousScaleFactor = 1.0;
     ui->label_Percentage->setText("100%");
 }
 
-void ChartsAndCamerasWnd::on_ZoomUpButton_clicked()
-{
-    scaleFactor *= 1.1;
-
-    int newWidth = currentPixmap.width() * scaleFactor;
-    int newHeight = currentPixmap.height() * scaleFactor;
-
-    QPixmap scaledImage = currentPixmap.scaled(newWidth, newHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
-
-    ui->Operatewidget->setPixmap(scaledImage);
-
-    double percentage = scaleFactor * 100;
-    QString percentageStr = QString::number((int)percentage);
-    ui->label_Percentage->setText(QString("%1%").arg(percentageStr));
-}
-
-void ChartsAndCamerasWnd::on_ZoomOutButton_clicked()
-{
-    double newScaleFactor = scaleFactor * 0.9;
-
+// 更新缩放比例
+void ChartsAndCamerasWnd::updateScale(double newScaleFactor) {
     if (newScaleFactor >= 1.0) {
         scaleFactor = newScaleFactor;
     } else {
-        scaleFactor = 1.0;
+        scaleFactor = 1.0; // 最小缩放比例为 1.0
     }
 
-    int newWidth = currentPixmap.width() * scaleFactor;
-    int newHeight = currentPixmap.height() * scaleFactor;
+    applyScale(); // 应用缩放
+}
 
-    QPixmap scaledImage = currentPixmap.scaled(newWidth, newHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+// 应用缩放
+void ChartsAndCamerasWnd::applyScale() {
+    if (currentMode == ModeImage) {
+        // 图片模式:缩放图片
+        int newWidth = currentPixmap.width() * scaleFactor;
+        int newHeight = currentPixmap.height() * scaleFactor;
 
-    ui->Operatewidget->setPixmap(scaledImage);
+        QPixmap scaledImage = currentPixmap.scaled(newWidth, newHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+        ui->Operatewidget->setPixmapAndPoint(scaledImage, previousScaleFactor, scaleFactor, mousePos);
+        previousScaleFactor = scaleFactor;
+    } else if (currentMode == ModeView && currentView) {
+        // View 模式:缩放 view
+        QTransform transform;
+        transform.scale(scaleFactor, scaleFactor);
+        currentView->setTransform(transform);
+    }
 
+    // 更新百分比显示
     double percentage = scaleFactor * 100;
     QString percentageStr = QString::number((int)percentage);
     ui->label_Percentage->setText(QString("%1%").arg(percentageStr));
 }
 
+void ChartsAndCamerasWnd::on_ZoomUpButton_clicked()
+{
+    mousePos = ui->Operatewidget->geometry().center();
+    updateScale(scaleFactor * 1.1);
+}
+
+void ChartsAndCamerasWnd::on_ZoomOutButton_clicked()
+{
+    mousePos = ui->Operatewidget->geometry().center();
+    updateScale(scaleFactor * 0.9);
+}
+
 void ChartsAndCamerasWnd::wheelEvent(QWheelEvent *event)
 {
+    mousePos = ui->Operatewidget->mapFromGlobal(event->globalPos());
+
     if (ui->Operatewidget->rect().contains(ui->Operatewidget->mapFromGlobal(event->globalPos()))) {
         if (event->angleDelta().y() > 0) {
-            scaleFactor *= 1.1;
+            updateScale(scaleFactor * 1.1); // 放大
         } else {
-            double newScaleFactor = scaleFactor * 0.9;
-
-            if (newScaleFactor >= 1.0) {
-                scaleFactor = newScaleFactor;
-            } else {
-                scaleFactor = 1.0;
-            }
+            updateScale(scaleFactor * 0.9); // 缩小
         }
-
-        int newWidth = currentPixmap.width() * scaleFactor;
-        int newHeight = currentPixmap.height() * scaleFactor;
-
-        QPixmap scaledImage = currentPixmap.scaled(newWidth, newHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
-        // ui->Operatewidget->setPixmap(scaledImage);
-        ui->Operatewidget->setPixmapAndPoint(scaledImage);
-
-        double percentage = scaleFactor * 100;
-        QString percentageStr = QString::number((int)percentage);
-        ui->label_Percentage->setText(QString("%1%").arg(percentageStr));
     }
 
     QMainWindow::wheelEvent(event);
@@ -658,10 +679,6 @@ void ChartsAndCamerasWnd::showAndHide(){
         ui->RedLight->show();
         ui->DotLight->show();
         ui->GreenLight->show();
-        ui->BlueLightlabel->show();
-        ui->RedLightlabel->show();
-        ui->DotLightlabel->show();
-        ui->GreenLightlabel->show();
     }else{
         for (QLineEdit* lineEdit : lineEdits) {
             lineEdit->hide();
@@ -676,10 +693,7 @@ void ChartsAndCamerasWnd::showAndHide(){
         ui->RedLight->hide();
         ui->DotLight->hide();
         ui->GreenLight->hide();
-        ui->BlueLightlabel->hide();
-        ui->RedLightlabel->hide();
-        ui->DotLightlabel->hide();
-        ui->GreenLightlabel->hide();
+
     }
 }
 

+ 11 - 0
OriginalWnd/ChartsAndCamerasWnd.h

@@ -10,6 +10,11 @@
 #include "CameraMaterialGroupWnd/MaterialWindow/Waffle.h"
 #include "CameraMaterialGroupWnd/MaterialWindow/MaterialBox.h"
 
+enum OperateMode {
+    ModeImage,  // 显示图片
+    ModeView    // 显示 view
+};
+
 namespace Ui {
 class ChartsAndCamerasWnd;
 }
@@ -106,6 +111,7 @@ private:
 
     QPixmap currentPixmap;
     qreal scaleFactor;
+    double previousScaleFactor;
 
     int lastGroupId = -1;
     int lastIndex = -1;
@@ -116,7 +122,12 @@ private:
     bool isShow;
 
     QMap<int, Wafer*> waferMap;
+    OperateMode currentMode = ModeImage;
+    QGraphicsView *currentView = nullptr;
+    QPoint mousePos;
 
+    void updateScale(double newScaleFactor); // 更新缩放比例
+    void applyScale(); // 应用缩放
 };
 
 #endif // CHARTSANDCAMERASWND_H

+ 19 - 56
OriginalWnd/ChartsAndCamerasWnd.ui

@@ -521,12 +521,15 @@
     <widget class="QWidget" name="BackGround" native="true">
      <property name="geometry">
       <rect>
-       <x>29</x>
-       <y>71</y>
-       <width>481</width>
-       <height>481</height>
+       <x>26</x>
+       <y>68</y>
+       <width>488</width>
+       <height>488</height>
       </rect>
      </property>
+     <property name="styleSheet">
+      <string notr="true">border: 4px solid red;</string>
+     </property>
     </widget>
     <widget class="QWidget" name="RedLight" native="true">
      <property name="geometry">
@@ -563,19 +566,6 @@
        <string>22</string>
       </property>
      </widget>
-     <widget class="QLabel" name="RedLightlabel">
-      <property name="geometry">
-       <rect>
-        <x>39</x>
-        <y>22</y>
-        <width>10</width>
-        <height>34</height>
-       </rect>
-      </property>
-      <property name="text">
-       <string/>
-      </property>
-     </widget>
      <widget class="QProgressBar" name="RedLightprogressBar">
       <property name="geometry">
        <rect>
@@ -594,6 +584,9 @@
       <property name="orientation">
        <enum>Qt::Vertical</enum>
       </property>
+      <property name="format">
+       <string/>
+      </property>
      </widget>
     </widget>
     <widget class="QWidget" name="GreenLight" native="true">
@@ -631,19 +624,6 @@
        <string>11</string>
       </property>
      </widget>
-     <widget class="QLabel" name="GreenLightlabel">
-      <property name="geometry">
-       <rect>
-        <x>36</x>
-        <y>22</y>
-        <width>12</width>
-        <height>34</height>
-       </rect>
-      </property>
-      <property name="text">
-       <string/>
-      </property>
-     </widget>
      <widget class="QProgressBar" name="GreenLightprogressBar">
       <property name="geometry">
        <rect>
@@ -659,6 +639,9 @@
       <property name="orientation">
        <enum>Qt::Vertical</enum>
       </property>
+      <property name="format">
+       <string/>
+      </property>
      </widget>
     </widget>
     <widget class="QWidget" name="BlueLight" native="true">
@@ -696,19 +679,6 @@
        <string>0</string>
       </property>
      </widget>
-     <widget class="QLabel" name="BlueLightlabel">
-      <property name="geometry">
-       <rect>
-        <x>32</x>
-        <y>22</y>
-        <width>19</width>
-        <height>34</height>
-       </rect>
-      </property>
-      <property name="text">
-       <string/>
-      </property>
-     </widget>
      <widget class="QProgressBar" name="BlueLightprogressBar">
       <property name="geometry">
        <rect>
@@ -724,6 +694,9 @@
       <property name="orientation">
        <enum>Qt::Vertical</enum>
       </property>
+      <property name="format">
+       <string/>
+      </property>
      </widget>
     </widget>
     <widget class="Line" name="line_2">
@@ -803,19 +776,6 @@
        <string>0</string>
       </property>
      </widget>
-     <widget class="QLabel" name="DotLightlabel">
-      <property name="geometry">
-       <rect>
-        <x>32</x>
-        <y>22</y>
-        <width>19</width>
-        <height>34</height>
-       </rect>
-      </property>
-      <property name="text">
-       <string/>
-      </property>
-     </widget>
      <widget class="QProgressBar" name="DotLightprogressBar">
       <property name="geometry">
        <rect>
@@ -831,6 +791,9 @@
       <property name="orientation">
        <enum>Qt::Vertical</enum>
       </property>
+      <property name="format">
+       <string/>
+      </property>
      </widget>
     </widget>
     <zorder>BackGround</zorder>

+ 17 - 7
OriginalWnd/MainAndSecondaryCamerasWnd.cpp

@@ -6,6 +6,7 @@
 #include <QTimer>
 #include "CameraMaterialGroupWnd/CameraImage/CameraImageHandler.h"
 #include <qDebug.h>
+#include <QScrollBar>
 
 MainAndSecondaryCamerasWnd::MainAndSecondaryCamerasWnd(QWidget *parent)
     : QMainWindow(parent)
@@ -68,7 +69,7 @@ void MainAndSecondaryCamerasWnd::initFrom()
         int num = numbers[i];
         CameraImageHandler* manager = new CameraImageHandler(num);
         Group* widget = manager->getGroup();
-        connect(widget,&Group::sendSignal,this,&MainAndSecondaryCamerasWnd::showAndHide);
+        connect(widget,&Group::send_button_Signal,this,&MainAndSecondaryCamerasWnd::showAndHide);
         if (widget != nullptr) {
             mainLayout->addWidget(widget);
             widgets.append(widget);
@@ -340,7 +341,7 @@ void MainAndSecondaryCamerasWnd::WaferWidget(int flag) {
     // layout->setContentsMargins(0, 0, 0, 0);
     // layout->addWidget(wafer->globalWidget);
     // operatewidget->setLayout(layout);
-    // operatewidget->setFixedSize(480, 480);
+    // operatewidget->setFixedSize(476, 476);
 }
 
 // 华夫盒
@@ -357,7 +358,7 @@ void MainAndSecondaryCamerasWnd::WaffleWidget(int flag) {
     layout->setContentsMargins(0, 0, 0, 0);
     layout->addWidget(waffle);
     operatewidget->setLayout(layout);
-    operatewidget->setFixedSize(480, 480);
+    operatewidget->setFixedSize(476, 476);
 }
 
 // 料盒
@@ -374,7 +375,7 @@ void MainAndSecondaryCamerasWnd::MaterialBoxWidget(int flag) {
     layout->setContentsMargins(0, 0, 0, 0);
     layout->addWidget(materialbox);
     operatewidget->setLayout(layout);
-    operatewidget->setFixedSize(480, 480);
+    operatewidget->setFixedSize(476, 476);
 }
 
 void MainAndSecondaryCamerasWnd::on_LeftZoomUpButton_clicked()
@@ -476,7 +477,7 @@ void MainAndSecondaryCamerasWnd::wheelEvent(QWheelEvent *event)
 
         QPixmap scaledImage_left = Left_currentPixmap.scaled(newWidth_left, newHeight_left, Qt::KeepAspectRatio, Qt::SmoothTransformation);
         // ui->LeftOperatewidget->setPixmap(scaledImage_left);
-        ui->LeftOperatewidget->setPixmapAndPoint(scaledImage_left);
+        // ui->LeftOperatewidget->setPixmapAndPoint(scaledImage_left);
 
         double percentage_left = Left_scaleFactor * 100;
         QString percentageStr_left = QString::number((int)percentage_left);
@@ -501,13 +502,22 @@ void MainAndSecondaryCamerasWnd::wheelEvent(QWheelEvent *event)
 
         QPixmap scaledImage = Right_currentPixmap.scaled(newWidth, newHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
         // ui->RightOperatewidget->setPixmap(scaledImage);
-        ui->RightOperatewidget->setPixmapAndPoint(scaledImage);
+        // ui->RightOperatewidget->setPixmapAndPoint(scaledImage);
 
         double percentage = Right_scaleFactor * 100;
         QString percentageStr = QString::number((int)percentage);
         ui->Rightlabel_Percentage->setText(QString("%1%").arg(percentageStr));
     }
-
+    if (ui->scrollArea->rect().contains(ui->scrollArea->mapFromGlobal(event->globalPos()))) {
+        // 获取 QScrollArea 的横向滚动条
+        QScrollBar *scrollBar = ui->scrollArea->horizontalScrollBar();
+        // 根据滚轮滚动方向改变滚动条的值
+        if (event->angleDelta().y() > 0) {
+            scrollBar->setValue(scrollBar->value() - 50);
+        } else {
+            scrollBar->setValue(scrollBar->value() + 50);
+        }
+    }
     QMainWindow::wheelEvent(event);
 }
 

+ 26 - 8
OriginalWnd/MainAndSecondaryCamerasWnd.ui

@@ -57,22 +57,28 @@
    <widget class="QWidget" name="LeftBackGround" native="true">
     <property name="geometry">
      <rect>
-      <x>33</x>
-      <y>71</y>
-      <width>478</width>
-      <height>478</height>
+      <x>30</x>
+      <y>68</y>
+      <width>484</width>
+      <height>484</height>
      </rect>
     </property>
+    <property name="styleSheet">
+     <string notr="true">border: 4px solid blue;</string>
+    </property>
    </widget>
    <widget class="QWidget" name="RightBackGround" native="true">
     <property name="geometry">
      <rect>
-      <x>595</x>
-      <y>71</y>
-      <width>478</width>
-      <height>478</height>
+      <x>592</x>
+      <y>68</y>
+      <width>484</width>
+      <height>484</height>
      </rect>
     </property>
+    <property name="styleSheet">
+     <string notr="true">border: 4px solid red;</string>
+    </property>
    </widget>
    <widget class="QWidget" name="LeftToolbar" native="true">
     <property name="geometry">
@@ -525,6 +531,9 @@
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
+     <property name="format">
+      <string/>
+     </property>
     </widget>
    </widget>
    <widget class="QWidget" name="GreenLight" native="true">
@@ -590,6 +599,9 @@
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
+     <property name="format">
+      <string/>
+     </property>
     </widget>
    </widget>
    <widget class="QWidget" name="BlueLight" native="true">
@@ -655,6 +667,9 @@
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
+     <property name="format">
+      <string/>
+     </property>
     </widget>
    </widget>
    <widget class="QWidget" name="DotLight" native="true">
@@ -720,6 +735,9 @@
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
+     <property name="format">
+      <string/>
+     </property>
     </widget>
    </widget>
    <zorder>RightBackGround</zorder>

+ 4 - 1
OriginalWnd/OriginalWnd.cpp

@@ -152,7 +152,7 @@ void OriginalWnd::setChineseMode(QMainWindow *OriginalWnd){
         ui->ChartButton->setText(QString());
         ui->DoubleImageButton->setText(QString());
         ui->SingleImageButton->setText(QString());
-        ui->pushButton_18->setText(QCoreApplication::translate("OriginalWnd", "PushButton", nullptr));
+        // ui->pushButton_18->setText(QCoreApplication::translate("OriginalWnd", "PushButton", nullptr));
         ui->label_name->setText(QCoreApplication::translate("OriginalWnd", "姓名001", nullptr));
         ui->RegistrationNumber->setText(QCoreApplication::translate("OriginalWnd", "注册号码 001", nullptr));
         ui->CalibrationButton->setText(QCoreApplication::translate("OriginalWnd", "校准", nullptr));
@@ -193,18 +193,21 @@ void OriginalWnd::initForm()
         ui->switchShowPageUI->addWidget(chartsAndCamerasWnd);
         ui->switchShowPageUI->setCurrentIndex(ui->switchShowPageUI->indexOf(chartsAndCamerasWnd));
         // ui->ChartButton->setStyleSheet("background-color: #A9B4FF;");
+		ui->ChartButton->setChecked(true);
     }
     if (lastSavedIndex == 2) {
         MainAndSecondaryCamerasWnd *mainAndSecondaryCamerasWnd = new MainAndSecondaryCamerasWnd;
         ui->switchShowPageUI->addWidget(mainAndSecondaryCamerasWnd);
         ui->switchShowPageUI->setCurrentIndex(ui->switchShowPageUI->indexOf(mainAndSecondaryCamerasWnd));
         // ui->DoubleImageButton->setStyleSheet("background-color: #A9B4FF;");
+		ui->DoubleImageButton->setChecked(true);
     }
     if (lastSavedIndex == 3) {
         SingleCameraOperationWnd *singleCameraOperationWnd = new SingleCameraOperationWnd;
         ui->switchShowPageUI->addWidget(singleCameraOperationWnd);
         ui->switchShowPageUI->setCurrentIndex(ui->switchShowPageUI->indexOf(singleCameraOperationWnd));
         // ui->SingleImageButton->setStyleSheet("background-color: #A9B4FF;");
+		ui->SingleImageButton->setChecked(true);
     }
 
 

+ 42 - 16
OriginalWnd/OriginalWnd.ui

@@ -122,7 +122,7 @@ production</string>
       <enum>Qt::NoArrow</enum>
      </property>
     </widget>
-    <widget class="QPushButton" name="ChartButton">
+    <widget class="QToolButton" name="ChartButton">
      <property name="geometry">
       <rect>
        <x>16</x>
@@ -134,8 +134,23 @@ production</string>
      <property name="text">
       <string/>
      </property>
+     <property name="iconSize">
+      <size>
+       <width>26</width>
+       <height>26</height>
+      </size>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <property name="autoExclusive">
+      <bool>true</bool>
+     </property>
+     <property name="toolButtonStyle">
+      <enum>Qt::ToolButtonIconOnly</enum>
+     </property>
     </widget>
-    <widget class="QPushButton" name="DoubleImageButton">
+    <widget class="QToolButton" name="DoubleImageButton">
      <property name="geometry">
       <rect>
        <x>71</x>
@@ -147,8 +162,20 @@ production</string>
      <property name="text">
       <string/>
      </property>
+     <property name="iconSize">
+      <size>
+       <width>26</width>
+       <height>26</height>
+      </size>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <property name="autoExclusive">
+      <bool>true</bool>
+     </property>
     </widget>
-    <widget class="QPushButton" name="SingleImageButton">
+    <widget class="QToolButton" name="SingleImageButton">
      <property name="geometry">
       <rect>
        <x>126</x>
@@ -160,6 +187,18 @@ production</string>
      <property name="text">
       <string/>
      </property>
+     <property name="iconSize">
+      <size>
+       <width>26</width>
+       <height>26</height>
+      </size>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <property name="autoExclusive">
+      <bool>true</bool>
+     </property>
     </widget>
     <widget class="Line" name="line_2">
      <property name="geometry">
@@ -174,19 +213,6 @@ production</string>
       <enum>Qt::Horizontal</enum>
      </property>
     </widget>
-    <widget class="QPushButton" name="pushButton_18">
-     <property name="geometry">
-      <rect>
-       <x>16</x>
-       <y>900916</y>
-       <width>158</width>
-       <height>48</height>
-      </rect>
-     </property>
-     <property name="text">
-      <string>PushButton</string>
-     </property>
-    </widget>
    </widget>
    <widget class="QWidget" name="Toptitlebar" native="true">
     <property name="geometry">

+ 48 - 4
OriginalWnd/SingleCameraOperationWnd.cpp

@@ -44,7 +44,7 @@ void SingleCameraOperationWnd::initFrom() {
     connectSliderAndLineEdit(ui->GreenLightverticalSlider, ui->GreenLightlineEdit);
     connectSliderAndLineEdit(ui->BlueLightverticalSlider, ui->BlueLightlineEdit);
     connectSliderAndLineEdit(ui->DotLightverticalSlider, ui->DotLightlineEdit);
-
+	connect(ui->LiveButton,&QPushButton::clicked,this,&SingleCameraOperationWnd::loadLiveVedio);
 
     // 设置右上部分
     QWidget *viewport = ui->scrollArea->viewport();
@@ -62,10 +62,12 @@ void SingleCameraOperationWnd::initFrom() {
         int num = numbers[i];
         CameraImageHandler* manager = new CameraImageHandler(num);
         Group* widget = manager->getGroup();
-        connect(widget,&Group::sendSignal,this,&SingleCameraOperationWnd::showAndHide);
+        connect(widget,&Group::send_button_Signal,this,&SingleCameraOperationWnd::showAndHideButton);
+		connect(widget,&Group::send_ComboBox_singal,this,&SingleCameraOperationWnd::handleComBoxChange);
         if (widget != nullptr) {
             layout->addWidget(widget);
             widgets.append(widget);
+			groupMap[num] = widget;
         }
 
         delete manager;
@@ -85,6 +87,8 @@ void SingleCameraOperationWnd::initFrom() {
 
     ui->Operatewidget->setMouseTracking(true);
     connect(ui->Operatewidget,&ImageWidget::sendDoubleClicksignal,this,&SingleCameraOperationWnd::handleDoubleClick);
+    connect(ui->DatacomboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
+            this, &SingleCameraOperationWnd::on_DatacomboBox_currentIndexChanged);
 
 }
 
@@ -379,7 +383,7 @@ void SingleCameraOperationWnd::wheelEvent(QWheelEvent *event) {
             qDebug()<<"11111"<<newWidth<<newHeight;
             QPixmap scaledImage = currentPixmap.scaled(newWidth, newHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
             // ui->Operatewidget->setPixmap(scaledImage); // 这里传递缩放后的图片
-            ui->Operatewidget->setPixmapAndPoint(scaledImage);
+            // ui->Operatewidget->setPixmapAndPoint(scaledImage);
 
 
 
@@ -432,7 +436,7 @@ void SingleCameraOperationWnd::handleDoubleClick(){
     ui->label_Percentage->setText("100%");
 }
 
-void SingleCameraOperationWnd::showAndHide(){
+void SingleCameraOperationWnd::showAndHideButton(){
     if(isShow == true){
         isShow = false;
     }else{
@@ -489,3 +493,43 @@ void SingleCameraOperationWnd::showAndHide(){
     }
 }
 
+void SingleCameraOperationWnd::startCamera(int cameraId) {
+    m_grabber = new ImageGrabber(cameraId);
+    connect(m_grabber, &ImageGrabber::imageGrabbed,
+            this, &SingleCameraOperationWnd::updateImage);
+    m_grabber->start();
+}
+
+void SingleCameraOperationWnd::on_DatacomboBox_currentIndexChanged(int index){
+    QSettings settings("YourCompany", "YourApplication_");
+    int groupId = settings.value("GroupId", 0).toInt();
+    if (groupMap.contains(groupId)) {
+        Group* group = groupMap[groupId];
+        // 修改属性
+
+        group->setDatacomboBox(index);
+    } else {
+        qDebug() << "Group with id" << groupId << "not found.";
+    }
+
+}
+void SingleCameraOperationWnd::handleComBoxChange(int groupId,int index){
+    QSettings settings("YourCompany", "YourApplication_");
+    int currentGroupId = settings.value("GroupId", 0).toInt();
+    if(currentGroupId == groupId){
+        ui->DatacomboBox->setCurrentIndex(index);
+    }
+}
+
+void SingleCameraOperationWnd::updateImage(const QImage&image){
+    QPixmap pixmap = QPixmap::fromImage(image);
+    QSize size = ui->Operatewidget->size();
+    // QPixmap scaledPixmap = pixmap.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+    QPixmap scaledPixmap = pixmap.scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+    ui->Operatewidget->setPixmap(scaledPixmap);
+
+}
+
+void SingleCameraOperationWnd::loadLiveVedio(){
+    startCamera(0);
+}

+ 12 - 3
OriginalWnd/SingleCameraOperationWnd.h

@@ -1,3 +1,4 @@
+#pragma once
 #ifndef SINGLECAMERAOPERATIONWND_H
 #define SINGLECAMERAOPERATIONWND_H
 
@@ -7,7 +8,8 @@
 #include "CameraMaterialGroupWnd/MaterialWindow/Wafer.h"
 #include "CameraMaterialGroupWnd/MaterialWindow/Waffle.h"
 #include "CameraMaterialGroupWnd/MaterialWindow/MaterialBox.h"
-
+#include "CameraDataHandleAndShow.h"
+#include "CameraMaterialGroupWnd/CameraImage/CameraImageHandler.h"
 namespace Ui {
 class SingleCameraOperationWnd;
 }
@@ -35,13 +37,17 @@ public:
     void WaferWidget(); // 圆晶
     void WaffleWidget(); // 华夫盒
     void MaterialBoxWidget(); // 料盒
-
+	void startCamera(int cameraId);
+    void updateImage(const QImage&image);
 public slots: // 确保这里声明了槽函数
     void onComboBoxIndexChanged(int index); // 确保签名匹配
     QString getImagePathFromIndex(int index);
     void handleDoubleClick();
-    void showAndHide();
+    void showAndHideButton();
 
+    void on_DatacomboBox_currentIndexChanged(int index);
+    void handleComBoxChange(int groupId,int index);
+    void loadLiveVedio();
 protected:
     void wheelEvent(QWheelEvent *event) override;
     void loadSettings();
@@ -70,6 +76,9 @@ private:
     Waffle *waffle; // 声明Waffle指针
     MaterialBox *materialbox; // 声明materialbox指针
     bool isShow;
+    ImageGrabber *m_grabber;
+    QMap<int, Group*> groupMap;
+    int currentCameraId;
 };
 
 #endif // SINGLECAMERAOPERATIONWND_H

+ 19 - 4
OriginalWnd/SingleCameraOperationWnd.ui

@@ -254,12 +254,15 @@
    <widget class="QWidget" name="BackGround" native="true">
     <property name="geometry">
      <rect>
-      <x>19</x>
-      <y>71</y>
-      <width>788</width>
-      <height>788</height>
+      <x>16</x>
+      <y>68</y>
+      <width>794</width>
+      <height>794</height>
      </rect>
     </property>
+    <property name="styleSheet">
+     <string notr="true">border: 4px solid red;</string>
+    </property>
    </widget>
    <widget class="QWidget" name="RedLight" native="true">
     <property name="geometry">
@@ -324,6 +327,9 @@
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
+     <property name="format">
+      <string/>
+     </property>
     </widget>
    </widget>
    <widget class="QWidget" name="GreenLight" native="true">
@@ -389,6 +395,9 @@
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
+     <property name="format">
+      <string/>
+     </property>
     </widget>
    </widget>
    <widget class="QWidget" name="BlueLight" native="true">
@@ -454,6 +463,9 @@
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
+     <property name="format">
+      <string/>
+     </property>
     </widget>
    </widget>
    <widget class="QWidget" name="DotLight" native="true">
@@ -519,6 +531,9 @@
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
+     <property name="format">
+      <string/>
+     </property>
     </widget>
    </widget>
    <zorder>BackGround</zorder>

+ 2 - 0
SBTdie-bonder-ui.pro

@@ -21,6 +21,7 @@ SOURCES += \
     ImageWidget.cpp \
     ImageWidget_nodrag.cpp \
     Login.cpp \
+    OriginalWnd/CameraDataHandleAndShow.cpp \
     OriginalWnd/ChartsAndCamerasWnd.cpp \
     OriginalWnd/DbTreeViewManager.cpp \
     OriginalWnd/MainAndSecondaryCamerasWnd.cpp \
@@ -44,6 +45,7 @@ HEADERS += \
     ImageWidget_nodrag.h \
     Login.h \
     MainWnd.h \
+    OriginalWnd/CameraDataHandleAndShow.h \
     OriginalWnd/ChartsAndCamerasWnd.h \
     OriginalWnd/DbTreeViewManager.h \
     OriginalWnd/MainAndSecondaryCamerasWnd.h \

+ 0 - 269
SBTdie-bonder-ui.pro.user

@@ -1,269 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 15.0.0, 2025-02-11T10:24:37. -->
-<qtcreator>
- <data>
-  <variable>EnvironmentId</variable>
-  <value type="QByteArray">{e1544cc0-8ac2-4740-93f8-2f17cf3eecf0}</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.ActiveTarget</variable>
-  <value type="qlonglong">0</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.EditorSettings</variable>
-  <valuemap type="QVariantMap">
-   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
-   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
-   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
-    <value type="QString" key="language">Cpp</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
-    </valuemap>
-   </valuemap>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
-    <value type="QString" key="language">QmlJS</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
-    </valuemap>
-   </valuemap>
-   <value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
-   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
-   <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">0</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>
-   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
-   <value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
-   <value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
-   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
-   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
-   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
-   <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
-   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
-   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
-   <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">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>
-   <value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
-   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
-   <value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
-   <value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.PluginSettings</variable>
-  <valuemap type="QVariantMap">
-   <valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
-    <value type="bool" key="AutoTest.Framework.Boost">true</value>
-    <value type="bool" key="AutoTest.Framework.CTest">false</value>
-    <value type="bool" key="AutoTest.Framework.Catch">true</value>
-    <value type="bool" key="AutoTest.Framework.GTest">true</value>
-    <value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
-    <value type="bool" key="AutoTest.Framework.QtTest">true</value>
-   </valuemap>
-   <value type="bool" key="AutoTest.ApplyFilter">false</value>
-   <valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
-   <valuelist type="QVariantList" key="AutoTest.PathFilters"/>
-   <value type="int" key="AutoTest.RunAfterBuild">0</value>
-   <value type="bool" key="AutoTest.UseGlobal">true</value>
-   <valuemap type="QVariantMap" key="ClangTools">
-    <value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
-    <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
-    <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
-    <value type="int" key="ClangTools.ParallelJobs">6</value>
-    <value type="bool" key="ClangTools.PreferConfigFile">true</value>
-    <valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
-    <valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
-    <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
-    <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
-   </valuemap>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Target.0</variable>
-  <valuemap type="QVariantMap">
-   <value type="QString" key="DeviceType">Desktop</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 32-bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 32-bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win32_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">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\Administrator\Desktop\qt\gerrit\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_32_bit-Debug</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/Administrator/Desktop/qt/gerrit/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_32_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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <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\Administrator\Desktop\qt\gerrit\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_32_bit-Release</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/Administrator/Desktop/qt/gerrit/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_32_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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
-    <value type="int" key="QtQuickCompiler">0</value>
-   </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\Administrator\Desktop\qt\gerrit\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_32_bit-Profile</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/Administrator/Desktop/qt/gerrit/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_32_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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
-    <value type="int" key="QtQuickCompiler">0</value>
-    <value type="int" key="SeparateDebugInfo">0</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
-    <value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
-    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
-    <value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <valuelist type="QVariantList" key="CustomOutputParsers"/>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <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">ProjectExplorer.CustomExecutableRunConfiguration</value>
-    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
-    <value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
-    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.TargetCount</variable>
-  <value type="qlonglong">1</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
-  <value type="int">22</value>
- </data>
- <data>
-  <variable>Version</variable>
-  <value type="int">22</value>
- </data>
-</qtcreator>

+ 0 - 271
SBTdie-bonder-ui.pro.user.18ca618

@@ -1,271 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 14.0.2, 2024-12-30T10:22:28. -->
-<qtcreator>
- <data>
-  <variable>EnvironmentId</variable>
-  <value type="QByteArray">{18ca618c-d623-4564-b8b0-9ee73c53f748}</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.ActiveTarget</variable>
-  <value type="qlonglong">0</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.EditorSettings</variable>
-  <valuemap type="QVariantMap">
-   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
-   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
-   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
-    <value type="QString" key="language">Cpp</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
-    </valuemap>
-   </valuemap>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
-    <value type="QString" key="language">QmlJS</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
-    </valuemap>
-   </valuemap>
-   <value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
-   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
-   <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.MarginColumn">80</value>
-   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
-   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
-   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
-   <value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
-   <value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
-   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
-   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
-   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
-   <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
-   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
-   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
-   <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">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>
-   <value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
-   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
-   <value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
-   <value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.PluginSettings</variable>
-  <valuemap type="QVariantMap">
-   <valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
-    <value type="bool" key="AutoTest.Framework.Boost">true</value>
-    <value type="bool" key="AutoTest.Framework.CTest">false</value>
-    <value type="bool" key="AutoTest.Framework.Catch">true</value>
-    <value type="bool" key="AutoTest.Framework.GTest">true</value>
-    <value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
-    <value type="bool" key="AutoTest.Framework.QtTest">true</value>
-   </valuemap>
-   <value type="bool" key="AutoTest.ApplyFilter">false</value>
-   <valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
-   <valuelist type="QVariantList" key="AutoTest.PathFilters"/>
-   <value type="int" key="AutoTest.RunAfterBuild">0</value>
-   <value type="bool" key="AutoTest.UseGlobal">true</value>
-   <valuemap type="QVariantMap" key="ClangTools">
-    <value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
-    <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
-    <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
-    <value type="int" key="ClangTools.ParallelJobs">6</value>
-    <value type="bool" key="ClangTools.PreferConfigFile">true</value>
-    <valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
-    <valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
-    <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
-    <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
-   </valuemap>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Target.0</variable>
-  <valuemap type="QVariantMap">
-   <value type="QString" key="DeviceType">Desktop</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
-   <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">0</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
-    <value type="int" key="EnableQmlDebugging">0</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\qt\3\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/qt/3/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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <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">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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
-    <value type="int" key="QtQuickCompiler">0</value>
-   </valuemap>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
-    <value type="int" key="EnableQmlDebugging">0</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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
-    <value type="int" key="QtQuickCompiler">0</value>
-    <value type="int" key="SeparateDebugInfo">0</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
-    <value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
-    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
-    <value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="QList&lt;int&gt;" key="Analyzer.Valgrind.VisibleErrorKinds"></value>
-    <valuelist type="QVariantList" key="CustomOutputParsers"/>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <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:D:/qt/3/die-bonder-ui/SBTdie-bonder-ui.pro</value>
-    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/qt/3/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/3/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.TargetCount</variable>
-  <value type="qlonglong">1</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
-  <value type="int">22</value>
- </data>
- <data>
-  <variable>Version</variable>
-  <value type="int">22</value>
- </data>
-</qtcreator>

+ 0 - 270
SBTdie-bonder-ui.pro.user.e165ec2

@@ -1,270 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 15.0.0, 2024-12-30T20:16:12. -->
-<qtcreator>
- <data>
-  <variable>EnvironmentId</variable>
-  <value type="QByteArray">{e165ec2f-6b55-456e-8e68-b67a0de7a105}</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.ActiveTarget</variable>
-  <value type="qlonglong">0</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.EditorSettings</variable>
-  <valuemap type="QVariantMap">
-   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
-   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
-   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
-    <value type="QString" key="language">Cpp</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
-    </valuemap>
-   </valuemap>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
-    <value type="QString" key="language">QmlJS</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
-    </valuemap>
-   </valuemap>
-   <value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
-   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
-   <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">0</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>
-   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
-   <value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
-   <value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
-   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
-   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
-   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
-   <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
-   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
-   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
-   <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">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>
-   <value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
-   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
-   <value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
-   <value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.PluginSettings</variable>
-  <valuemap type="QVariantMap">
-   <valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
-    <value type="bool" key="AutoTest.Framework.Boost">true</value>
-    <value type="bool" key="AutoTest.Framework.CTest">false</value>
-    <value type="bool" key="AutoTest.Framework.Catch">true</value>
-    <value type="bool" key="AutoTest.Framework.GTest">true</value>
-    <value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
-    <value type="bool" key="AutoTest.Framework.QtTest">true</value>
-   </valuemap>
-   <value type="bool" key="AutoTest.ApplyFilter">false</value>
-   <valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
-   <valuelist type="QVariantList" key="AutoTest.PathFilters"/>
-   <value type="int" key="AutoTest.RunAfterBuild">0</value>
-   <value type="bool" key="AutoTest.UseGlobal">true</value>
-   <valuemap type="QVariantMap" key="ClangTools">
-    <value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
-    <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
-    <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
-    <value type="int" key="ClangTools.ParallelJobs">10</value>
-    <value type="bool" key="ClangTools.PreferConfigFile">true</value>
-    <valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
-    <valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
-    <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
-    <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
-   </valuemap>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Target.0</variable>
-  <valuemap type="QVariantMap">
-   <value type="QString" key="DeviceType">Desktop</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 32-bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 32-bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win32_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">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\99242\Desktop\1230dev2\1230dev2\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_32_bit-Debug</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/99242/Desktop/1230dev2/1230dev2/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_32_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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <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\99242\Desktop\1230dev2\1230dev2\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_32_bit-Release</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/99242/Desktop/1230dev2/1230dev2/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_32_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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
-    <value type="int" key="QtQuickCompiler">0</value>
-   </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\99242\Desktop\1230dev2\1230dev2\die-bonder-ui\build\Desktop_Qt_5_15_2_MinGW_32_bit-Profile</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/99242/Desktop/1230dev2/1230dev2/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_32_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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
-    <value type="int" key="QtQuickCompiler">0</value>
-    <value type="int" key="SeparateDebugInfo">0</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
-    <value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
-    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
-    <value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="QList&lt;int&gt;" key="Analyzer.Valgrind.VisibleErrorKinds"></value>
-    <valuelist type="QVariantList" key="CustomOutputParsers"/>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <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">ProjectExplorer.CustomExecutableRunConfiguration</value>
-    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
-    <value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
-    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.TargetCount</variable>
-  <value type="qlonglong">1</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
-  <value type="int">22</value>
- </data>
- <data>
-  <variable>Version</variable>
-  <value type="int">22</value>
- </data>
-</qtcreator>

+ 0 - 440
SBTdie-bonder-ui.pro.user.f2ab8ef

@@ -1,440 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 15.0.0, 2024-12-30T13:43:21. -->
-<qtcreator>
- <data>
-  <variable>EnvironmentId</variable>
-  <value type="QByteArray">{f2ab8eff-3fdd-4b92-9bff-1d8cb181cb85}</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.ActiveTarget</variable>
-  <value type="qlonglong">0</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.EditorSettings</variable>
-  <valuemap type="QVariantMap">
-   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
-   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
-   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
-    <value type="QString" key="language">Cpp</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
-    </valuemap>
-   </valuemap>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
-    <value type="QString" key="language">QmlJS</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
-    </valuemap>
-   </valuemap>
-   <value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
-   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
-   <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>
-   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
-   <value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
-   <value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
-   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
-   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
-   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
-   <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
-   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
-   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
-   <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="bool" key="EditorConfiguration.addFinalNewLine">true</value>
-   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
-   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
-   <value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
-   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
-   <value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
-   <value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.PluginSettings</variable>
-  <valuemap type="QVariantMap">
-   <valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
-    <value type="bool" key="AutoTest.Framework.Boost">true</value>
-    <value type="bool" key="AutoTest.Framework.CTest">false</value>
-    <value type="bool" key="AutoTest.Framework.Catch">true</value>
-    <value type="bool" key="AutoTest.Framework.GTest">true</value>
-    <value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
-    <value type="bool" key="AutoTest.Framework.QtTest">true</value>
-   </valuemap>
-   <value type="bool" key="AutoTest.ApplyFilter">false</value>
-   <valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
-   <valuelist type="QVariantList" key="AutoTest.PathFilters"/>
-   <value type="int" key="AutoTest.RunAfterBuild">0</value>
-   <value type="bool" key="AutoTest.UseGlobal">true</value>
-   <valuemap type="QVariantMap" key="ClangTools">
-    <value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
-    <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
-    <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
-    <value type="int" key="ClangTools.ParallelJobs">6</value>
-    <value type="bool" key="ClangTools.PreferConfigFile">true</value>
-    <valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
-    <valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
-    <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
-    <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
-   </valuemap>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Target.0</variable>
-  <valuemap type="QVariantMap">
-   <value type="QString" key="DeviceType">Desktop</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
-   <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">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_MinGW_64_bit-Debug</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-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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <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>
-    <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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
-    <value type="int" key="QtQuickCompiler">0</value>
-   </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>
-    <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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
-    <value type="int" key="QtQuickCompiler">0</value>
-    <value type="int" key="SeparateDebugInfo">0</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
-    <value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
-    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
-    <value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="QList&lt;int&gt;" key="Analyzer.Valgrind.VisibleErrorKinds"></value>
-    <valuelist type="QVariantList" key="CustomOutputParsers"/>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <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="bool" key="ProjectExplorer.RunConfiguration.Customized">true</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/1230dev1/die-bonder-ui/build/Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
-  </valuemap>
- </data>
- <data>
-  <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="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>
-    <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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <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>
-    <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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
-    <value type="int" key="QtQuickCompiler">0</value>
-   </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>
-    <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>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
-      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
-      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
-     </valuemap>
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
-      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
-     </valuemap>
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
-    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
-    <value type="int" key="QtQuickCompiler">0</value>
-    <value type="int" key="SeparateDebugInfo">0</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
-    <value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
-    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
-    <value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="QList&lt;int&gt;" key="Analyzer.Valgrind.VisibleErrorKinds"></value>
-    <valuelist type="QVariantList" key="CustomOutputParsers"/>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <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="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>
-   </valuemap>
-   <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.TargetCount</variable>
-  <value type="qlonglong">2</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
-  <value type="int">22</value>
- </data>
- <data>
-  <variable>Version</variable>
-  <value type="int">22</value>
- </data>
-</qtcreator>

+ 38 - 29
light.qss

@@ -198,35 +198,38 @@ OriginalWnd QWidget#widget QToolButton#startButton
     padding-left: 9px;
 }
 
-OriginalWnd QWidget#widget QPushButton#ChartButton:hover,
-OriginalWnd QWidget#widget QPushButton#DoubleImageButton:hover,
-OriginalWnd QWidget#widget QPushButton#SingleImageButton:hover,
-OriginalWnd QWidget#widget QPushButton#ChartButton:checked,
-OriginalWnd QWidget#widget QPushButton#DoubleImageButton:checked,
-OriginalWnd QWidget#widget QPushButton#SingleImageButton:checked
+OriginalWnd QWidget#widget>QToolButton#ChartButton::hover,
+OriginalWnd QWidget#widget>QToolButton#DoubleImageButton::hover,
+OriginalWnd QWidget#widget>QToolButton#SingleImageButton::hover,
+OriginalWnd QWidget#widget>QToolButton#ChartButton::checked,
+OriginalWnd QWidget#widget>QToolButton#DoubleImageButton::checked,
+OriginalWnd QWidget#widget>QToolButton#SingleImageButton::checked
 {
-    background: #A9B4FF;
+    background: #8090FF;
 }
 
-OriginalWnd QWidget#widget QPushButton#ChartButton
+OriginalWnd QWidget#widget QToolButton#ChartButton
 {
     border-radius: 6px;
     background: #CBD0FF;
-    image: url(:/images/light/Demo001_1.png);
+    padding-bottom: 8px;
+    qproperty-icon:url(:/images/light/Demo001_1.png);
 }
 
-OriginalWnd QWidget#widget QPushButton#DoubleImageButton
+OriginalWnd QWidget#widget QToolButton#DoubleImageButton
 {
     border-radius: 6px;
     background: #CBD0FF;
-    image: url(:/images/light/Demo001_2.png);
+    padding-bottom: 8px;
+    qproperty-icon:url(:/images/light/Demo001_2.png);
 }
 
-OriginalWnd QWidget#widget QPushButton#SingleImageButton
+OriginalWnd QWidget#widget QToolButton#SingleImageButton
 {
     border-radius: 6px;
     background: #CBD0FF;
-    image: url(:/images/light/Demo001_3.png);
+    padding-bottom: 8px;
+    qproperty-icon:url(:/images/light/Demo001_3.png);
 }
 
 /* SingleCameraOperationWnd */
@@ -311,32 +314,38 @@ ChartsAndCamerasWnd QWidget#BackGround
     border-radius: 0px;
 }
 
-SingleCameraOperationWnd QLabel#RedLightlabel,
-MainAndSecondaryCamerasWnd QLabel#RedLightlabel_2,
-ChartsAndCamerasWnd QLabel#RedLightlabel
+QProgressBar {
+    border: 2px solid grey;
+    border-radius: 5px;
+    background-color: transparent;
+}
+
+QProgressBar#RedLightprogressBar::chunk,
+QProgressBar#RedLightprogressBar_2::chunk
 {
-    image: url(:/images/LightGroup/RedLight.png);
+    border-radius: 3px;
+    background-color: red;
 }
 
-SingleCameraOperationWnd QLabel#GreenLightlabel,
-MainAndSecondaryCamerasWnd QLabel#GreenLightlabel_5,
-ChartsAndCamerasWnd QLabel#GreenLightlabel
+QProgressBar#GreenLightprogressBar::chunk,
+QProgressBar#GreenLightprogressBar_5::chunk
 {
-    image: url(:/images/LightGroup/GreenLight.png);
+    border-radius: 3px;
+    background-color: Green;
 }
 
-SingleCameraOperationWnd QLabel#BlueLightlabel,
-MainAndSecondaryCamerasWnd QLabel#BlueLightlabel_2,
-ChartsAndCamerasWnd QLabel#BlueLightlabel
+QProgressBar#BlueLightprogressBar::chunk,
+QProgressBar#BlueLightprogressBar_2::chunk
 {
-    image: url(:/images/LightGroup/BlueLight.png);
+    border-radius: 3px;
+    background-color: Blue;
 }
 
-SingleCameraOperationWnd QLabel#DotLightlabel,
-MainAndSecondaryCamerasWnd QLabel#DotLightlabel_2,
-ChartsAndCamerasWnd QLabel#DotLightlabel
+QProgressBar#DotLightprogressBar::chunk,
+QProgressBar#DotLightprogressBar_2::chunk
 {
-    image: url(:/images/LightGroup/DotLight.png);
+    border-radius: 3px;
+    background-color: yellow;
 }
 
 /* 工具栏 */