From 9adfea89d376dbfbadedb7b926bc7e4debed76e4 Mon Sep 17 00:00:00 2001 From: chenchaohong <15927339605@139.com> Date: Tue, 3 Dec 2024 20:44:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E8=BF=9B=E7=A8=8B=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=EF=BC=8C=E6=89=B9=E6=AC=A1=E5=80=92=E5=BA=8F=EF=BC=8C=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=B1=95=E7=A4=BA=E5=8A=A0=E9=80=9F=EF=BC=8C=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PreVerify/DefectViewCustom.cpp | 4 +- PreVerify/DefectViewCustom.h | 3 +- PreVerify/DefectViewCustom.zip | Bin 16987 -> 0 bytes PreVerify/MainWidget.cpp | 17 ++++-- PreVerify/MainWidget.h | 3 +- PreVerify/PreVerify.vcxproj | 2 +- PreVerify/PreVerify.vcxproj.filters | 25 ++++++--- PreVerify/PreVerifyWidget.cpp | 84 ++++++++++++++++++---------- PreVerify/PreVerifyWidget.h | 11 +++- PreVerify/main.cpp | 4 +- 10 files changed, 103 insertions(+), 50 deletions(-) delete mode 100644 PreVerify/DefectViewCustom.zip diff --git a/PreVerify/DefectViewCustom.cpp b/PreVerify/DefectViewCustom.cpp index d8c59ed..8d6c3c3 100644 --- a/PreVerify/DefectViewCustom.cpp +++ b/PreVerify/DefectViewCustom.cpp @@ -15,17 +15,17 @@ #include "qpixmapcache.h" #include "JSONDocUtil.h" #include +#include "PreVerifyWidget.h" DefectViewCustom::DefectViewCustom(QWidget* parent) { - QImageReader::setAllocationLimit(0); setParent(parent); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setTransformationAnchor(QGraphicsView::AnchorUnderMouse); setResizeAnchor(QGraphicsView::AnchorUnderMouse); setRenderHint(QPainter::Antialiasing); - setDragMode(QGraphicsView::RubberBandDrag); + setDragMode(QGraphicsView::ScrollHandDrag); setFrameShape(QFrame::NoFrame); m_scene.setBackgroundBrush(QBrush(QColor(Qt::white))); diff --git a/PreVerify/DefectViewCustom.h b/PreVerify/DefectViewCustom.h index 263e2e2..6c4b45e 100644 --- a/PreVerify/DefectViewCustom.h +++ b/PreVerify/DefectViewCustom.h @@ -9,12 +9,11 @@ #include "logger.h" #include "QPushButton" #include "QLabel" -#include "PreVerifyWidget.h" #include - +class PreVerifyWidget; class DefectViewCustom : public QGraphicsView { Q_OBJECT LOG4QT_DECLARE_QCLASS_LOGGER diff --git a/PreVerify/DefectViewCustom.zip b/PreVerify/DefectViewCustom.zip deleted file mode 100644 index 4c1b953cab17bfdfde4962be0643b6ea5ca321b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16987 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 - + diff --git a/PreVerify/PreVerify.vcxproj.filters b/PreVerify/PreVerify.vcxproj.filters index 6893aff..cbbccc6 100644 --- a/PreVerify/PreVerify.vcxproj.filters +++ b/PreVerify/PreVerify.vcxproj.filters @@ -16,6 +16,9 @@ {7630d594-8c7c-4b8e-b52e-948aa2bbc118} + + {3f54e682-abaa-4fc8-b627-2d43d4b38d7f} + @@ -31,8 +34,12 @@ utils - - + + customComponent + + + customComponent + @@ -44,7 +51,10 @@ utils - + + + customComponent + @@ -54,11 +64,12 @@ main - - - - + + + customComponent + + \ No newline at end of file diff --git a/PreVerify/PreVerifyWidget.cpp b/PreVerify/PreVerifyWidget.cpp index 58a5e90..34e79b3 100644 --- a/PreVerify/PreVerifyWidget.cpp +++ b/PreVerify/PreVerifyWidget.cpp @@ -16,10 +16,13 @@ #include "qpixmapcache.h" #include "QSpacerItem" #include "qmessagebox.h" -#include "resource.h" +#include "QtConcurrent/qtconcurrentrun.h" +#include "QFutureWatcher" +#include "DefectViewCustom.h" PreVerifyWidget::PreVerifyWidget(QWidget* parent) { + QImageReader::setAllocationLimit(0); QPixmapCache::setCacheLimit(8 * 1024 * 1024); setUi(); setConnection(); @@ -29,10 +32,6 @@ PreVerifyWidget::PreVerifyWidget(QWidget* parent) { loadDate(); } -PreVerifyWidget::~PreVerifyWidget() { - delete this; -} - void PreVerifyWidget::setUi() { setLayout(&m_lt); m_lt.addLayout(&m_leftLt, 3); @@ -149,7 +148,10 @@ void PreVerifyWidget::setUi() { m_treeWgt.setIndentation(5); m_treeWgt.setColumnCount(treeHeaders.size()); m_treeWgt.setHeaderLabels(treeHeaders); - m_treeWgt.header()->setSectionResizeMode(QHeaderView::ResizeToContents); + m_treeWgt.setColumnWidth(0, 200); + m_treeWgt.setColumnWidth(1, 45); + m_treeWgt.setColumnWidth(2, 30); + m_treeWgt.setColumnWidth(3, 45); m_treeWgt.setSelectionMode(QAbstractItemView::SingleSelection); } @@ -218,12 +220,12 @@ void PreVerifyWidget::setConnection() { QObject::connect(&m_lastDefectBtn, &QPushButton::pressed, this, &PreVerifyWidget::slot_lastDefectBtnPressed); QObject::connect(&m_nextBoardBtn, &QPushButton::pressed, this, &PreVerifyWidget::slot_nextBoardBtnPressed); QObject::connect(&m_nextDefectBtn, &QPushButton::pressed, this, &PreVerifyWidget::slot_nextDefectBtnPressed); + QObject::connect(this, &PreVerifyWidget::sig_grdLtUpdate, this, &PreVerifyWidget::slot_grdLtUpdate); } void PreVerifyWidget::loadDate() { m_dateCmb.addItem(""); QString path = "D:/PCBDataset/Defect/fengming/AOI_DEFECT"; - QJsonObject yearJson; QDir rootDir(path); QStringList dateList = rootDir.entryList(QDir::NoDotAndDotDot | QDir::AllDirs, QDir::Time); @@ -281,6 +283,7 @@ void PreVerifyWidget::loadTreeWgt() { //创建文件夹Json对象 toJson(yearJson, path); + //创建文件夹树 for (QString yearKey : yearJson.keys()) { QTreeWidgetItem* yearItem = new QTreeWidgetItem(&m_treeWgt); @@ -417,7 +420,35 @@ void PreVerifyWidget::slot_treeWgtCurrentItemChanged(QTreeWidgetItem* current, Q } QJsonArray arr = m_vrsJson.value("Defectx").toArray(); + + QString samplePath = "D:/PCBDataset/Reference/" + jobLayer + "/Learn/panel_image.png"; + if (!QPixmapCache::find(jobLayer, &m_samplePxmp)) { + m_samplePxmp.load(samplePath, nullptr, Qt::NoFormatConversion); + QPixmapCache::insert(jobLayer, m_samplePxmp); + } + + QList defectItems; + collect(count, arr, jobLayer, defectItems); + int sum = 0; + for (DefectViewCustom* item : defectItems) { + m_grdLt.addWidget(item, sum / m_colCount, sum % m_colCount); + sum++; + } + + m_grdScr.verticalScrollBar()->setSingleStep(m_grdScr.height()); + m_grdScr.verticalScrollBar()->setSliderPosition(0); + this->setFocus(); +} + +void PreVerifyWidget::collect(int count, QJsonArray& arr,QString& jobLayer, QList& defectItems) { + QPixmap px; + QPixmapCache::find(jobLayer, &px); for (int i = 0; i < count; i++) { + int defectId = i + 1; + QString scanImgPath = m_dirPath + m_ab + QString::number(defectId) + ".jpg"; + if (!QFile(scanImgPath).exists()) { + continue; + } DefectViewCustom* defectItem = new DefectViewCustom(); defectItem->m_preVerifyWgt = this; defectItem->setParent(this); @@ -426,37 +457,30 @@ void PreVerifyWidget::slot_treeWgtCurrentItemChanged(QTreeWidgetItem* current, Q if (obj.contains("AIresult") && obj.value("AIresult") == 0) { isValid = false; } - int defectId = i + 1; - int defectType = obj.value("Code").toDouble(); + int defectType = obj.value("Code").toInt(); double x = obj.value("X").toDouble(); double y = obj.value("Y").toDouble(); - QString samplePath = "D:/PCBDataset/Reference/" + jobLayer + "\\Learn\\panel_image.png"; - if (!QPixmapCache::find(jobLayer, &m_samplePxmp)) { - m_samplePxmp.load(samplePath, nullptr, Qt::NoFormatConversion); - QPixmapCache::insert(jobLayer, m_samplePxmp); - } bool containSample = m_showCamChk.isChecked(); - defectItem->load(m_dirPath + m_ab + QString::number(defectId) + ".jpg", defectId, isValid, x, y, jobLayer, m_samplePxmp, defectType, m_rowHeight, containSample); - if (m_colCount == 2) { + defectItem->load(scanImgPath, defectId, isValid, x, y, jobLayer, px, defectType, m_rowHeight, containSample); + switch (m_colCount) { + case 2: defectItem->scale(1.8, 1.8); - } - else if (m_colCount == 3) { + break; + case 3: defectItem->scale(1.6, 1.6); - } - else if (m_colCount == 4) { + break; + case 4: defectItem->scale(0.9, 0.9); - } - else if (m_colCount == 5) { + break; + case 5: defectItem->scale(0.9, 0.9); + break; + default: + break; } - m_grdLt.addWidget(defectItem, i / m_colCount, i % m_colCount); - - m_grdScr.verticalScrollBar()->setSingleStep(m_grdScr.height()); + defectItems.push_back(defectItem); } - - m_grdScr.verticalScrollBar()->setSliderPosition(0); - this->setFocus(); } //1.添加 -1.删除 @@ -740,3 +764,7 @@ void PreVerifyWidget::keyPressEvent(QKeyEvent* event) { void PreVerifyWidget::slot_winStateChangeEvent() { slot_treeWgtCurrentItemChanged(m_treeWgt.currentItem(), nullptr); } + +void PreVerifyWidget::slot_grdLtUpdate() { + update(); +} \ No newline at end of file diff --git a/PreVerify/PreVerifyWidget.h b/PreVerify/PreVerifyWidget.h index 86a4198..c4cfcd9 100644 --- a/PreVerify/PreVerifyWidget.h +++ b/PreVerify/PreVerifyWidget.h @@ -16,16 +16,19 @@ #include "qspinbox.h" #include "ScrollAreaCustom.h" #include "qmutex.h" +#include "logger.h" - +class DefectViewCustom; class PreVerifyWidget : public QWidget { + Q_OBJECT + LOG4QT_DECLARE_QCLASS_LOGGER public: PreVerifyWidget(QWidget* parent = nullptr); - ~PreVerifyWidget(); void setUi(); void setConnection(); void load(); + void collect(int count, QJsonArray& arr, QString& jobLayer, QList& defectItems); void updateOne(QString defectId, int action); QString defectId2Desc(int defectId); void filter(); @@ -94,7 +97,8 @@ private: int m_rowHeight = -1; QList m_boardItemList; - +signals: + void sig_grdLtUpdate(); public slots: void slot_treeWgtCurrentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous); @@ -103,6 +107,7 @@ public slots: void slot_nextBoardBtnPressed(); void slot_nextDefectBtnPressed(); void slot_winStateChangeEvent(); + void slot_grdLtUpdate(); }; diff --git a/PreVerify/main.cpp b/PreVerify/main.cpp index 51d30b2..d45345f 100644 --- a/PreVerify/main.cpp +++ b/PreVerify/main.cpp @@ -7,9 +7,9 @@ #include "QGuiApplication" #include #include -#include "XDongleVerifierWorker.h" #include "QDir" #include "QDateTime" +#include "qthreadpool.h" #pragma comment(lib, "Dbghelp.lib") @@ -20,6 +20,8 @@ int main(int argc, char* argv[]) { QApplication a(argc, argv); SetUnhandledExceptionFilter(exceptionCallback); + QThreadPool::globalInstance()->setMaxThreadCount(15); + MainWidget* mainWidget = new MainWidget(); mainWidget->load();