#include "WaffleProgramPage.h" #include #include #include "Src/RewriteControl/Controls/SpinBox.h" #include "Src/RewriteControl/Controls/DoubleSpinBox.h" #include #include #include #include #include #include WaffleProgramPage::WaffleProgramPage(QWidget* parent) :QWidget(parent) { ui.setupUi(this); ui.pushButtonSave->setProperty("type", "save"); setStyleSheet("QGroupBox { border: 2px solid #A9B4FF;border-radius: 10px; }"); //setStyleSheet( // "QPushButton{background-color: #A9B4FF;border-radius: 5px;height: 30px;}" // "QDoubleSpinBox{background: #FFFFFF;border: 1px solid #BABBDC;border - radius: 6px;padding: 2px 5px;}" // "QSpinBox{background: #FFFFFF;border: 1px solid #BABBDC;border - radius: 6px;padding: 2px 5px;}" // "QLineEdit{background: #FFFFFF;border: 1px solid #BABBDC;border - radius: 6px;padding: 2px 5px;}" // "QCheckBox::indicator{width: 20px;height: 20px;}" // "QCheckBox::indicator:unchecked{background - color: #FFFFFF;border-radius: 2px;}" // "QComboBox{background: #FFFFFF;border: 1px solid #BABBDC;border - radius: 6px;padding: 2px 5px;}" // "QComboBox::drop - down{width: 20px;}" // "QGroupBox{ border: 2px solid red}" // //"QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top center; padding: 0 3px; }" //); m_manageDB = CManageDB::GetInstance(); if (m_manageDB == nullptr) return; m_pProduct = m_manageDB->GetCProduct(); if (m_pProduct == nullptr) return; initPage(); connect(ui.pushButtonSave, &QPushButton::clicked, this, [=]() { m_pProduct->SetAllWaffleMatrix(m_vecWaffleMatrix); m_pProduct->SetAllWaffleDieMatrix(m_vecSubWaffleMatrix); }); } WaffleProgramPage::~WaffleProgramPage() { } void WaffleProgramPage::AddMatrixPage(int vectorIndex, PROGRAM_WAFFLE_MATRIX_STRUCT matrixData, std::vector vecSubMatrix) { int matrixNum = m_mapSubMatrixControls.size(); int newMatrixID = ++matrixNum; QVector vecControls; QWidget* outWidget = new QWidget(); QGridLayout* outMatrixGridLayout = new QGridLayout(); outMatrixGridLayout->setSpacing(6); outMatrixGridLayout->setObjectName(QString::fromUtf8("Out GridLayout")); QGridLayout* boxGridLayout = new QGridLayout(); boxGridLayout->setSpacing(6); boxGridLayout->setObjectName(QString::fromUtf8("Box GridLayout")); QHBoxLayout* buttonLayout = new QHBoxLayout(); QSpacerItem* item = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); buttonLayout->addSpacerItem(item); QPushButton* pushButtonAddOutMatrix = new QPushButton(); pushButtonAddOutMatrix->setObjectName(QString::fromUtf8("button Add")); pushButtonAddOutMatrix->setText(tr("add out Matrix")); buttonLayout->addWidget(pushButtonAddOutMatrix); connect(pushButtonAddOutMatrix, &QPushButton::clicked, this, [=]() { PROGRAM_WAFFLE_MATRIX_STRUCT newMatrix; //排序 std::sort(m_vecWaffleMatrix.begin(), m_vecWaffleMatrix.end(), [](const PROGRAM_WAFFLE_MATRIX_STRUCT& a, const PROGRAM_WAFFLE_MATRIX_STRUCT& b) { return a.MatrixId < b.MatrixId; }); //找Id int newId = 1; for (const auto& matrix : m_vecWaffleMatrix) { if (matrix.MatrixId == newId) { newId++; } else if (matrix.MatrixId > newId) { break; } } newMatrix.MatrixId = newId; int newVectorIndex = m_vecWaffleMatrix.size(); std::vector newVecSubMatrix; m_vecWaffleMatrix.push_back(newMatrix); AddMatrixPage(newVectorIndex, newMatrix, newVecSubMatrix); }); //ui.verticalLayout->addLayout(buttonLayout); QGroupBox* groupBox = new QGroupBox(outWidget); groupBox->setLayout(boxGridLayout); QGridLayout* matrixGridLayout = new QGridLayout(); matrixGridLayout->setSpacing(6); matrixGridLayout->setObjectName(QString::fromUtf8("matrixGridLayout")); QLabel* labelTitle = new QLabel(outWidget); labelTitle->setObjectName(QString::fromUtf8("labelTitle")); labelTitle->setText(tr("Matrix ") + QString::number(vectorIndex)); labelTitle->setStyleSheet("color: #6A78FF;height: 30px"); matrixGridLayout->addWidget(labelTitle, 0, 1, 1, 3); vecControls.push_back(labelTitle); QPushButton* pushButtonAdd = new QPushButton(outWidget); pushButtonAdd->setObjectName(QString::fromUtf8("button Add")); pushButtonAdd->setText(tr("add sub Matrix")); matrixGridLayout->addWidget(pushButtonAdd, 1, 1, 1, 1); pushButtonAdd->setProperty("type", "default"); connect(pushButtonAdd, &QPushButton::clicked, this, [=]() { int newIndex = m_vecSubWaffleMatrix.size(); PROGRAM_DIE_MATRIX_STRUCT dieMatrix; //排序 std::sort(m_vecSubWaffleMatrix.begin(), m_vecSubWaffleMatrix.end(), [](const PROGRAM_DIE_MATRIX_STRUCT& a, const PROGRAM_DIE_MATRIX_STRUCT& b) { return a.MatrixId < b.MatrixId; }); //找Id int newId = 1; for (const auto& matrix : m_vecSubWaffleMatrix) { if (matrix.MatrixId == newId) { newId++; } else if (matrix.MatrixId > newId) { break; } } dieMatrix.MatrixId = newId; dieMatrix.strModuleName = "WaffleHead"; dieMatrix.iModuleId = MODULE_LIST::WaffleHead; m_vecSubWaffleMatrix.push_back(dieMatrix); //找大矩阵ID/Index auto currentIt = m_mapOutWidgetIndex.find(outWidget); int index = currentIt.value(); //迭代器 erase后currentIt被删除了 m_vecWaffleMatrix[index].VecDieMatrixId.push_back(newId); AddSubMatrixPage(newIndex, dieMatrix, boxGridLayout); }); QPushButton* pushButtonDelete = new QPushButton(outWidget); pushButtonDelete->setObjectName(QString::fromUtf8("button delete")); pushButtonDelete->setText(tr("delete Matrix")); matrixGridLayout->addWidget(pushButtonDelete, 1, 2, 1, 1); connect(pushButtonDelete, &QPushButton::clicked, this, [=]() { //处理index auto currentIt = m_mapOutWidgetIndex.find(outWidget); int index = currentIt.value(); //迭代器 erase后currentIt被删除了 m_mapOutWidgetIndex.erase(currentIt); for (auto it = m_mapOutWidgetIndex.begin(); it != m_mapOutWidgetIndex.end(); it++) { if (it.value() > index) { int newIndex = it.value() - 1; m_mapOutWidgetIndex.insert(it.key(), newIndex); } } //删除缓存数据 m_vecWaffleMatrix.erase(m_vecWaffleMatrix.begin() + index); delete outWidget; }); QLabel* labelRow = new QLabel(outWidget); labelRow->setObjectName(QString::fromUtf8("labelRow")); labelRow->setText(tr("Row ")); matrixGridLayout->addWidget(labelRow, 2, 0, 1, 1); vecControls.push_back(labelRow); SpinBox* spinBoxRow = new SpinBox(outWidget); spinBoxRow->setObjectName(QString::fromUtf8("spinBoxRow")); matrixGridLayout->addWidget(spinBoxRow, 2, 1, 1, 1); vecControls.push_back(spinBoxRow); QLabel* labelCol = new QLabel(outWidget); labelCol->setObjectName(QString::fromUtf8("labelCol")); labelCol->setText(tr("Cow ")); matrixGridLayout->addWidget(labelCol, 3, 0, 1, 1); vecControls.push_back(labelCol); SpinBox* spinBoxCol = new SpinBox(outWidget); spinBoxCol->setObjectName(QString::fromUtf8("spinBoxCol")); matrixGridLayout->addWidget(spinBoxCol, 3, 1, 1, 1); vecControls.push_back(spinBoxCol); QLabel* labelLeftTop = new QLabel(outWidget); labelLeftTop->setObjectName(QString::fromUtf8("labelLeftTop")); labelLeftTop->setText(tr("Left Top Pos ")); matrixGridLayout->addWidget(labelLeftTop, 4, 0, 1, 1); vecControls.push_back(labelLeftTop); DoubleSpinBox* doubleSpinBoxLeftTopX = new DoubleSpinBox(outWidget); doubleSpinBoxLeftTopX->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopX")); matrixGridLayout->addWidget(doubleSpinBoxLeftTopX, 4, 1, 1, 1); vecControls.push_back(doubleSpinBoxLeftTopX); DoubleSpinBox* doubleSpinBoxLeftTopY = new DoubleSpinBox(outWidget); doubleSpinBoxLeftTopY->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopY")); matrixGridLayout->addWidget(doubleSpinBoxLeftTopY, 4, 2, 1, 1); vecControls.push_back(doubleSpinBoxLeftTopY); QLabel* labelRightTopPos = new QLabel(outWidget); labelRightTopPos->setObjectName(QString::fromUtf8("labelRightTopPos")); labelRightTopPos->setText(tr("Right Top Pos ")); matrixGridLayout->addWidget(labelRightTopPos, 5, 0, 1, 1); vecControls.push_back(labelRightTopPos); DoubleSpinBox* doubleSpinBoxRightTopX = new DoubleSpinBox(outWidget); doubleSpinBoxRightTopX->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopX")); matrixGridLayout->addWidget(doubleSpinBoxRightTopX, 5, 1, 1, 1); vecControls.push_back(doubleSpinBoxRightTopX); DoubleSpinBox* doubleSpinBoxRightTopY = new DoubleSpinBox(outWidget); doubleSpinBoxRightTopY->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopY")); matrixGridLayout->addWidget(doubleSpinBoxRightTopY, 5, 2, 1, 1); vecControls.push_back(doubleSpinBoxRightTopY); QLabel* labelRightButtomPos = new QLabel(outWidget); labelRightButtomPos->setObjectName(QString::fromUtf8("labelRightButtomPos")); labelRightButtomPos->setText(tr("Right Buttom pos")); matrixGridLayout->addWidget(labelRightButtomPos, 6, 0, 1, 1); vecControls.push_back(labelRightButtomPos); DoubleSpinBox* doubleSpinBoxRightButtomX = new DoubleSpinBox(outWidget); doubleSpinBoxRightButtomX->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomX")); matrixGridLayout->addWidget(doubleSpinBoxRightButtomX, 6, 1, 1, 1); vecControls.push_back(doubleSpinBoxRightButtomX); DoubleSpinBox* doubleSpinBoxRightButtomY = new DoubleSpinBox(outWidget); doubleSpinBoxRightButtomY->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomY")); matrixGridLayout->addWidget(doubleSpinBoxRightButtomY, 6, 2, 1, 1); vecControls.push_back(doubleSpinBoxRightTopX); QLabel* labelNoBondPts = new QLabel(outWidget); labelNoBondPts->setObjectName(QString::fromUtf8("labelNoBondPts")); labelNoBondPts->setText(tr("No Bond Points")); matrixGridLayout->addWidget(labelNoBondPts, 7, 0, 1, 1); vecControls.push_back(labelNoBondPts); QLineEdit* lineEditNoBondPts = new QLineEdit(outWidget); lineEditNoBondPts->setObjectName(QString::fromUtf8("lineEditNoBondPts")); matrixGridLayout->addWidget(lineEditNoBondPts, 7, 1, 1, 2); vecControls.push_back(lineEditNoBondPts); lineEditNoBondPts->setReadOnly(true); lineEditNoBondPts->setCursor(Qt::PointingHandCursor); lineEditNoBondPts->setProperty("subVectorIndex", vectorIndex); // 存储索引 lineEditNoBondPts->installEventFilter(this); QFrame* line = new QFrame(outWidget); line->setFrameShape(QFrame::NoFrame); // 移除默认框架 line->setFixedHeight(2); // 设置固定高度 line->setStyleSheet("background-color: #C7CAEB;"); boxGridLayout->addLayout(matrixGridLayout, 2, 0); boxGridLayout->addWidget(line); outMatrixGridLayout->addLayout(buttonLayout, 1, 0); outMatrixGridLayout->addWidget(groupBox); outWidget->setLayout(outMatrixGridLayout); ui.verticalLayout->addWidget(outWidget); m_mapOutWidgetIndex.insert(outWidget, vectorIndex); for (int j = 0; j < matrixData.VecDieMatrixId.size(); j++) { for (int i = 0; i < m_vecSubWaffleMatrix.size(); i++) { if (matrixData.VecDieMatrixId[j] == m_vecSubWaffleMatrix[i].MatrixId) { AddSubMatrixPage(i, m_vecSubWaffleMatrix[i], boxGridLayout); } } } QSpacerItem* vSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); ui.verticalLayout->addItem(vSpacer); //for (int i = 0; i = vecSubMatrix.size(); i++) //{ // AddSubMatrixPage(i, vecSubMatrix[i], outMatrixGridLayout); //} spinBoxRow->setValue(matrixData.PackRow); spinBoxCol->setValue(matrixData.PackCol); doubleSpinBoxLeftTopX->setValue(matrixData.LeftTopPoint.x); doubleSpinBoxLeftTopY->setValue(matrixData.LeftTopPoint.y); doubleSpinBoxRightTopX->setValue(matrixData.RightTopPoint.x); doubleSpinBoxRightTopY->setValue(matrixData.RightTopPoint.y); doubleSpinBoxRightButtomX->setValue(matrixData.RightBottomPoint.x); doubleSpinBoxRightButtomY->setValue(matrixData.RightBottomPoint.y); connect(spinBoxRow, &SpinBox::editDone, this, [=]() { m_vecWaffleMatrix[vectorIndex].PackRow = spinBoxRow->value(); }); connect(spinBoxCol, &SpinBox::editDone, this, [=]() { m_vecWaffleMatrix[vectorIndex].PackCol = spinBoxCol->value(); }); connect(doubleSpinBoxLeftTopX, &DoubleSpinBox::editDone, this, [=]() { m_vecWaffleMatrix[vectorIndex].LeftTopPoint.x = doubleSpinBoxLeftTopX->value(); }); connect(doubleSpinBoxLeftTopY, &DoubleSpinBox::editDone, this, [=]() { m_vecWaffleMatrix[vectorIndex].LeftTopPoint.y = doubleSpinBoxLeftTopY->value(); }); connect(doubleSpinBoxRightTopX, &DoubleSpinBox::editDone, this, [=]() { m_vecWaffleMatrix[vectorIndex].RightTopPoint.x = doubleSpinBoxRightTopX->value(); }); connect(doubleSpinBoxRightTopY, &DoubleSpinBox::editDone, this, [=]() { m_vecWaffleMatrix[vectorIndex].RightTopPoint.y = doubleSpinBoxRightTopY->value(); }); connect(doubleSpinBoxRightButtomX, &DoubleSpinBox::editDone, this, [=]() { m_vecWaffleMatrix[vectorIndex].RightBottomPoint.x = doubleSpinBoxRightButtomX->value(); }); connect(doubleSpinBoxRightButtomY, &DoubleSpinBox::editDone, this, [=]() { m_vecWaffleMatrix[vectorIndex].RightBottomPoint.y = doubleSpinBoxRightButtomY->value(); }); connect(lineEditNoBondPts, &QLineEdit::textChanged, this, [=]() { }); } void WaffleProgramPage::AddSubMatrixPage(int subVectorIndex, PROGRAM_DIE_MATRIX_STRUCT subMatrix, QGridLayout* layout) { QVector vecControls; QWidget* subWidget = new QWidget(); QGridLayout* subGridLayout = new QGridLayout(subWidget); subGridLayout->setSpacing(6); subGridLayout->setObjectName(QString::fromUtf8("subGridLayout")); //groupBox->setLayout(subGridLayout); QLabel* labelTitle = new QLabel(subWidget); labelTitle->setObjectName(QString::fromUtf8("labelTitle")); labelTitle->setText(tr("Sub Matrix ") + QString::number(subVectorIndex)); labelTitle->setStyleSheet("color: #808BFF;height: 30px"); subGridLayout->addWidget(labelTitle, 0, 1, 1, 3); vecControls.push_back(labelTitle); QPushButton* pushButtonDelete = new QPushButton(subWidget); pushButtonDelete->setObjectName(QString::fromUtf8("button delete")); pushButtonDelete->setText(tr("delete Matrix")); subGridLayout->addWidget(pushButtonDelete, 1, 2, 1, 1); connect(pushButtonDelete, &QPushButton::clicked, this, [=]() { //处理index auto currentIt = m_mapSubWidgetIndex.find(subWidget); int index = currentIt.value(); //迭代器 erase后currentIt被删除了 m_mapSubWidgetIndex.erase(currentIt); for (auto it = m_mapSubWidgetIndex.begin(); it != m_mapSubWidgetIndex.end(); ++it) { if (it.value() > index) { //value() 返回的是副本不是引用 int newIndex = it.value() - 1; m_mapSubWidgetIndex.insert(it.key(), newIndex); } } // 子矩阵ID int subMatrixId = m_vecSubWaffleMatrix[index].MatrixId; //删除缓存 m_vecSubWaffleMatrix.erase(m_vecSubWaffleMatrix.begin() + index); //删除大矩阵子ID数据(遍历删除) for (PROGRAM_WAFFLE_MATRIX_STRUCT& matrix : m_vecWaffleMatrix) { auto it = std::find(matrix.VecDieMatrixId.begin(), matrix.VecDieMatrixId.end(), subMatrixId); if (it != matrix.VecDieMatrixId.end()) { matrix.VecDieMatrixId.erase(it); } } delete subWidget; }); QLabel* labelRow = new QLabel(subWidget); labelRow->setObjectName(QString::fromUtf8("labelRow")); labelRow->setText(tr("Row ")); subGridLayout->addWidget(labelRow, 2, 0, 1, 1); vecControls.push_back(labelRow); SpinBox* spinBoxRow = new SpinBox(subWidget); spinBoxRow->setObjectName(QString::fromUtf8("spinBoxRow")); subGridLayout->addWidget(spinBoxRow, 2, 1, 1, 1); vecControls.push_back(spinBoxRow); QLabel* labelCol = new QLabel(subWidget); labelCol->setObjectName(QString::fromUtf8("labelCol")); labelCol->setText(tr("Cow ")); subGridLayout->addWidget(labelCol, 3, 0, 1, 1); vecControls.push_back(labelCol); SpinBox* spinBoxCol = new SpinBox(subWidget); spinBoxCol->setObjectName(QString::fromUtf8("spinBoxCol")); subGridLayout->addWidget(spinBoxCol, 3, 1, 1, 1); vecControls.push_back(spinBoxCol); QLabel* labelLeftTop = new QLabel(subWidget); labelLeftTop->setObjectName(QString::fromUtf8("labelLeftTop")); labelLeftTop->setText(tr("Left Top Pos ")); subGridLayout->addWidget(labelLeftTop, 4, 0, 1, 1); vecControls.push_back(labelLeftTop); DoubleSpinBox* doubleSpinBoxLeftTopX = new DoubleSpinBox(subWidget); doubleSpinBoxLeftTopX->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopX")); subGridLayout->addWidget(doubleSpinBoxLeftTopX, 4, 1, 1, 1); vecControls.push_back(doubleSpinBoxLeftTopX); DoubleSpinBox* doubleSpinBoxLeftTopY = new DoubleSpinBox(subWidget); doubleSpinBoxLeftTopY->setObjectName(QString::fromUtf8("doubleSpinBoxLeftTopY")); subGridLayout->addWidget(doubleSpinBoxLeftTopY, 4, 2, 1, 1); vecControls.push_back(doubleSpinBoxLeftTopY); QLabel* labelRightTopPos = new QLabel(subWidget); labelRightTopPos->setObjectName(QString::fromUtf8("labelRightTopPos")); labelRightTopPos->setText(tr("Right Top Pos ")); subGridLayout->addWidget(labelRightTopPos, 5, 0, 1, 1); vecControls.push_back(labelRightTopPos); DoubleSpinBox* doubleSpinBoxRightTopX = new DoubleSpinBox(subWidget); doubleSpinBoxRightTopX->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopX")); subGridLayout->addWidget(doubleSpinBoxRightTopX, 5, 1, 1, 1); vecControls.push_back(doubleSpinBoxRightTopX); DoubleSpinBox* doubleSpinBoxRightTopY = new DoubleSpinBox(subWidget); doubleSpinBoxRightTopY->setObjectName(QString::fromUtf8("doubleSpinBoxRightTopY")); subGridLayout->addWidget(doubleSpinBoxRightTopY, 5, 2, 1, 1); vecControls.push_back(doubleSpinBoxRightTopY); QLabel* labelRightButtomPos = new QLabel(subWidget); labelRightButtomPos->setObjectName(QString::fromUtf8("labelRightButtomPos")); labelRightButtomPos->setText(tr("Right Buttom pos")); subGridLayout->addWidget(labelRightButtomPos, 6, 0, 1, 1); vecControls.push_back(labelRightButtomPos); DoubleSpinBox* doubleSpinBoxRightButtomX = new DoubleSpinBox(subWidget); doubleSpinBoxRightButtomX->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomX")); subGridLayout->addWidget(doubleSpinBoxRightButtomX, 6, 1, 1, 1); vecControls.push_back(doubleSpinBoxRightButtomX); DoubleSpinBox* doubleSpinBoxRightButtomY = new DoubleSpinBox(subWidget); doubleSpinBoxRightButtomY->setObjectName(QString::fromUtf8("doubleSpinBoxRightButtomY")); subGridLayout->addWidget(doubleSpinBoxRightButtomY, 6, 2, 1, 1); vecControls.push_back(doubleSpinBoxRightTopX); QLabel* labelNoBondPts = new QLabel(subWidget); labelNoBondPts->setObjectName(QString::fromUtf8("labelNoBondPts")); labelNoBondPts->setText(tr("No Bond Points")); subGridLayout->addWidget(labelNoBondPts, 7, 0, 1, 1); vecControls.push_back(labelNoBondPts); QLineEdit* lineEditNoBondPts = new QLineEdit(subWidget); lineEditNoBondPts->setObjectName(QString::fromUtf8("lineEditNoBondPts")); lineEditNoBondPts->setReadOnly(true); lineEditNoBondPts->setCursor(Qt::PointingHandCursor); lineEditNoBondPts->setProperty("vectorIndex", subVectorIndex); // 存储索引 lineEditNoBondPts->installEventFilter(this); subGridLayout->addWidget(lineEditNoBondPts, 7, 1, 1, 2); vecControls.push_back(lineEditNoBondPts); //layout->addLayout(subGridLayout, 11, 0); QFrame* line = new QFrame(subWidget); line->setFrameShape(QFrame::NoFrame); // 移除默认框架 line->setFixedHeight(2); // 设置固定高度 line->setStyleSheet("background-color: #C7CAEB;"); subGridLayout->addWidget(line, 10, 0, 1, 3); layout->addWidget(subWidget); m_mapSubWidgetIndex.insert(subWidget, subVectorIndex); spinBoxRow->setValue(subMatrix.MatrixRow); spinBoxCol->setValue(subMatrix.MatrixCol); doubleSpinBoxLeftTopX->setValue(subMatrix.LeftTopPoint.x); doubleSpinBoxLeftTopY->setValue(subMatrix.LeftTopPoint.y); doubleSpinBoxRightTopX->setValue(subMatrix.RightTopPoint.x); doubleSpinBoxRightTopY->setValue(subMatrix.RightTopPoint.y); doubleSpinBoxRightButtomX->setValue(subMatrix.RightBottomPoint.x); doubleSpinBoxRightButtomY->setValue(subMatrix.RightBottomPoint.y); connect(spinBoxRow, &SpinBox::editDone, this, [=]() { auto it = m_mapSubWidgetIndex.find(subWidget); m_vecSubWaffleMatrix[it.value()].MatrixRow = spinBoxRow->value(); }); connect(spinBoxCol, &SpinBox::editDone, this, [=]() { auto it = m_mapSubWidgetIndex.find(subWidget); m_vecSubWaffleMatrix[it.value()].MatrixCol = spinBoxCol->value(); }); connect(doubleSpinBoxLeftTopX, &DoubleSpinBox::editDone, this, [=]() { auto it = m_mapSubWidgetIndex.find(subWidget); m_vecSubWaffleMatrix[it.value()].LeftTopPoint.x = doubleSpinBoxLeftTopX->value(); }); connect(doubleSpinBoxLeftTopY, &DoubleSpinBox::editDone, this, [=]() { auto it = m_mapSubWidgetIndex.find(subWidget); m_vecSubWaffleMatrix[it.value()].LeftTopPoint.y = doubleSpinBoxLeftTopY->value(); }); connect(doubleSpinBoxRightTopX, &DoubleSpinBox::editDone, this, [=]() { auto it = m_mapSubWidgetIndex.find(subWidget); m_vecSubWaffleMatrix[it.value()].RightTopPoint.x = doubleSpinBoxRightTopX->value(); }); connect(doubleSpinBoxRightTopY, &DoubleSpinBox::editDone, this, [=]() { auto it = m_mapSubWidgetIndex.find(subWidget); m_vecSubWaffleMatrix[it.value()].RightTopPoint.y = doubleSpinBoxRightTopY->value(); }); connect(doubleSpinBoxRightButtomX, &DoubleSpinBox::editDone, this, [=]() { auto it = m_mapSubWidgetIndex.find(subWidget); m_vecSubWaffleMatrix[it.value()].RightBottomPoint.x = doubleSpinBoxRightButtomX->value(); }); connect(doubleSpinBoxRightButtomY, &DoubleSpinBox::editDone, this, [=]() { auto it = m_mapSubWidgetIndex.find(subWidget); m_vecSubWaffleMatrix[it.value()].RightBottomPoint.y = doubleSpinBoxRightButtomY->value(); }); connect(lineEditNoBondPts, &QLineEdit::textChanged, this, [=]() { auto it = m_mapSubWidgetIndex.find(subWidget); }); } bool WaffleProgramPage::eventFilter(QObject* obj, QEvent* event) { if (event->type() == QEvent::MouseButtonPress) { auto* lineEdit = qobject_cast(obj); if (lineEdit) { int index = lineEdit->property("vectorIndex").toInt(); onNoBondPtsClicked(lineEdit, index); return true; // 拦截事件 } } return QWidget::eventFilter(obj, event); } void WaffleProgramPage::onNoBondPtsClicked(QLineEdit* lineEdit, int index) { if (index < 0 || index >= m_vecWaffleMatrix.size()) return; const auto& waffle = m_vecWaffleMatrix[index]; NoBondPtEditDialog dlg(waffle.PackRow, waffle.PackCol, waffle.VecNoBondDie, this); if (dlg.exec() == QDialog::Accepted) { QVector selected = dlg.getSelectedPoints(); m_vecWaffleMatrix[index].VecNoBondDie = std::vector(selected.begin(), selected.end()); QStringList ptList; for (const auto& pt : selected) ptList << QString("(%1,%2)").arg(pt.x).arg(pt.y); lineEdit->setText(ptList.join(" ")); } } void WaffleProgramPage::SaveAllParam() { } void WaffleProgramPage::MatrixChangeEvent() { for (PROGRAM_WAFFLE_MATRIX_STRUCT& waffleMatrix : m_vecWaffleMatrix) { m_pProduct->SetWaffleMatrix(waffleMatrix.MatrixId, waffleMatrix); } m_pProduct->SetDieMatrix(m_vecSubWaffleMatrix, true); //for (PROGRAM_BOND_MATRIX_STRUCT& bondMatrix : m_vecWaffleMatrix) //{ // m_manageDB->GetCProduct()->SetBondMatrix(bondMatrix.BondMatrixId, bondMatrix); //} //for (PROGRAM_POINT_MATRIX_STRUCT& pointMatrix : m_vecSubMatrixs) //{ // m_manageDB->GetCProduct()->SetPointMatrix(pointMatrix.MatrixId, pointMatrix); //} } void WaffleProgramPage::initPage() { m_vecWaffleMatrix = m_pProduct->GetWaffleMatrix(); for (int i = 0; i < m_vecWaffleMatrix.size(); i++) { for (int j = 0; j < m_vecWaffleMatrix[i].VecDieMatrixId.size(); j++) { PROGRAM_DIE_MATRIX_STRUCT subMatrix; m_pProduct->GetDieMatrix(m_vecWaffleMatrix[i].VecDieMatrixId[j], subMatrix); m_vecSubWaffleMatrix.push_back(subMatrix); //AddMatrixPage(i, j, subMatrix); } AddMatrixPage(i, m_vecWaffleMatrix[i], m_vecSubWaffleMatrix); //for (int j = 0; j < m_vecWaffleMatrix[i].VecDieMatrixId.size(); j++) //{ // for (int k = 0; k < m_vecSubWaffleMatrix.size(); k++) // { // if (m_vecWaffleMatrix[i].VecDieMatrixId[j] == m_vecSubWaffleMatrix[k].MatrixId) // { // AddSubMatrixPage(i, m_vecSubWaffleMatrix[k],nullptr); // } // } //} } }