From 473cf5329357629d97f56368d9ad21ecd9afb83a Mon Sep 17 00:00:00 2001 From: "bob.pan" Date: Fri, 20 Aug 2021 17:55:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E4=B8=8D=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E7=9A=84UI=E4=BB=A3=E7=A0=81=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=B8=80=E5=A4=84=E7=94=B1designerUI=E5=BC=95=E8=B5=B7?= =?UTF-8?q?=E7=9A=84=E9=80=80=E5=87=BA=E5=B4=A9=E6=BA=83bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lpbdesigner/DsgAlgorithmParamMgr.cpp | 14 - src/lpbdesigner/DsgAlgorithmParamMgr.h | 6 - src/lpbdesigner/DsgParamDlg.cpp | 159 +------- src/lpbdesigner/DsgParamDlg.h | 2 +- src/lpbdesigner/DsgRoiDlg.cpp | 486 +++++++++-------------- src/lpbdesigner/DsgRoiDlg.h | 14 +- src/lpbdesigner/MainFrame.cpp | 2 - src/lpbdesigner/RoiDlg.ui | 23 -- src/lpbdesigner/RoiScene.cpp | 122 +++--- src/lpbdesigner/RoiScene.h | 89 ++--- src/lpbdesigner/SizeHandle.cpp | 1 - tpvs17/tpMain/lpMainWin.cpp | 5 + 12 files changed, 291 insertions(+), 632 deletions(-) diff --git a/src/lpbdesigner/DsgAlgorithmParamMgr.cpp b/src/lpbdesigner/DsgAlgorithmParamMgr.cpp index 570af10..9d6209d 100644 --- a/src/lpbdesigner/DsgAlgorithmParamMgr.cpp +++ b/src/lpbdesigner/DsgAlgorithmParamMgr.cpp @@ -20,7 +20,6 @@ CDsgAlgorithmParamMgrDlg::CDsgAlgorithmParamMgrDlg(QWidget *parent) : QDialog(pa ui->pushButton_5->setVisible(false); ui->pushButton_2->setVisible(false); ui->pushButton_7->setVisible(false); - //ui->pushButton_6->setVisible(false); ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->tableWidget, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(OnPopMenu(const QPoint&))); connect(ui->tableWidget, SIGNAL(cellDoubleClicked(int, int)), this, SLOT(OnEditParam())); @@ -406,23 +405,10 @@ bool CDsgAlgorithmParamMgrDlg::OnDownMove() PLP_ALGORITHM_PARAM CDsgAlgorithmParamMgrDlg::ShowParamMgrDlg(IDetectorAlgorithm* lpAlgo) { -// if (this->exec() == QDialog::Accepted) -// { -//// return GetCurrentDevice(); -//// m_pSink->OnSetParam(m_pTask); -// return NULL; -// } - - //open(); show(); return NULL; } -void CDsgAlgorithmParamMgrDlg::CleanUp() -{ - -} - QString CDsgAlgorithmParamMgrDlg::GetParamTypeStr(AlgoParamType type) { QString strType; diff --git a/src/lpbdesigner/DsgAlgorithmParamMgr.h b/src/lpbdesigner/DsgAlgorithmParamMgr.h index 415228f..4bf1ad7 100644 --- a/src/lpbdesigner/DsgAlgorithmParamMgr.h +++ b/src/lpbdesigner/DsgAlgorithmParamMgr.h @@ -21,13 +21,8 @@ public: bool Initialize(IDetectorEngine* lpDE, IDetectorTask* lpTask, IDetectorAlgorithm* lpAlgo, ParamDialogType type); bool InitGraphView(); QString showVariant(const AlgoParamType type, const QVariant &var); - void CleanUp(); - PLP_ALGORITHM_PARAM ShowParamMgrDlg(IDetectorAlgorithm* lpAlgo); QString GetParamTypeStr(AlgoParamType type); - -signals: - public slots : bool OnAddParam(); bool OnDeleteParam(); @@ -35,7 +30,6 @@ public slots : bool OnPopMenu(const QPoint&); bool OnUpMove(); bool OnDownMove(); - private: Ui::AlgorithmParamMgrDialog *ui{ nullptr }; CDsgParamDlg m_tParamDlg; diff --git a/src/lpbdesigner/DsgParamDlg.cpp b/src/lpbdesigner/DsgParamDlg.cpp index 1aecb2e..b081dc9 100644 --- a/src/lpbdesigner/DsgParamDlg.cpp +++ b/src/lpbdesigner/DsgParamDlg.cpp @@ -1,7 +1,7 @@ #include "DsgParamDlg.h" #include "ui_ParamDlg.h" -CDsgParamDlg::CDsgParamDlg(QWidget *parent) : QDialog(parent), m_valueCombox(this), m_tRoiDlg(this) +CDsgParamDlg::CDsgParamDlg(QWidget *parent) : QDialog(parent), m_valueCombox(this) { ui = new Ui::ParamDlg; m_pTask = NULL; @@ -21,10 +21,16 @@ CDsgParamDlg::CDsgParamDlg(QWidget *parent) : QDialog(parent), m_valueCombox(thi connect(ui->comboBox_2, SIGNAL(currentIndexChanged(int)), this, SLOT(OnChangeAlgo())); connect(ui->m_pbROISet, SIGNAL(clicked()), this, SLOT(OnShowRoiDlg())); + m_pRoiDlg = new CDsgRoiDlg(this); } CDsgParamDlg::~CDsgParamDlg() { + if (m_pRoiDlg) + { + delete m_pRoiDlg; + m_pRoiDlg = nullptr; + } if (ui) { delete ui; @@ -133,15 +139,18 @@ bool CDsgParamDlg::OnChangeAlgo() bool CDsgParamDlg::OnShowRoiDlg() { - if (!m_tRoiDlg.Initialize(m_pDE, m_pAlgo, m_pTask)) + if (!m_pRoiDlg) + return false; + + if (!m_pRoiDlg->Initialize(m_pDE, m_pAlgo, m_pTask)) return false; m_tRoiData.img = m_pTask->GetTaskInfo()->templateImg; - m_tRoiDlg.setParent(this); - m_tRoiDlg.setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); - m_tRoiDlg.setWindowIcon(QIcon(":/image/leaper")); - m_tRoiDlg.setWindowModality(Qt::ApplicationModal); - m_tRoiDlg.setAttribute(Qt::WA_ShowModal, true); - m_tRoiData = m_tRoiDlg.ShowRoiDlg(m_tRoiData); + m_pRoiDlg->setParent(this); + m_pRoiDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); + m_pRoiDlg->setWindowIcon(QIcon(":/image/leaper")); + m_pRoiDlg->setWindowModality(Qt::ApplicationModal); + m_pRoiDlg->setAttribute(Qt::WA_ShowModal, true); + m_tRoiData = m_pRoiDlg->ShowRoiDlg(m_tRoiData); return true; } @@ -169,7 +178,6 @@ PLP_ALGORITHM_PARAM CDsgParamDlg::ShowParamDlg(PLP_ALGORITHM_PARAM pParam) ui->comboBox_3->setCurrentIndex(srcParmID > 0 ? srcParmID : 0); if (pParam->type == LP_ROI) m_tRoiData = pParam->value.value(); - } else { @@ -233,94 +241,6 @@ PLP_ALGORITHM_PARAM CDsgParamDlg::ShowParamDlg(PLP_ALGORITHM_PARAM pParam) int CDsgParamDlg::GetTypeIndex(AlgoParamType type) { return type; - - int nIndex; - switch (type) - { - case LP_INT: - { - nIndex = 0; - break; - } - case LP_BOOLEAN: - { - nIndex = 1; - break; - } - case LP_STRING: - { - nIndex = 2; - break; - } - case LP_DOUBLE: - { - nIndex = 3; - break; - } - case LP_IMAGE: - { - nIndex = 4; - break; - } - case LP_POINT: - { - nIndex = 5; - break; - } - case LP_POINTF: - { - nIndex = 6; - break; - } - case LP_RECT: - { - nIndex = 7; - break; - } - case LP_RECTF: - { - nIndex = 8; - break; - } - case LP_ROI: - { - nIndex = 9; - break; - } - case LP_MAT: - { - nIndex = 10; - break; - } - case LP_LIST_INT: - { - nIndex = 11; - break; - } - case LP_LIST_BOOLEAN: - { - nIndex = 12; - break; - } - case LP_LIST_STRING: - { - nIndex = 13; - break; - } - case LP_LIST_DOUBLE: - { - nIndex = 14; - } - case LP_USER: - { - nIndex = 15; - } - - default: - break; - } - - return nIndex; } void CDsgParamDlg::InitValueCtrl(AlgoParamType type, PLP_ALGORITHM_PARAM pParam) @@ -354,12 +274,6 @@ void CDsgParamDlg::InitValueCtrl(AlgoParamType type, PLP_ALGORITHM_PARAM pParam) break; } case LP_STRING: - //{ - // ui->lineEdit_2->setHidden(false); - // m_valueCombox.setHidden(true); - // m_roiButton.setHidden(true); - // break; - //} case LP_DOUBLE: { ui->label_2->setHidden(false); @@ -408,37 +322,6 @@ void CDsgParamDlg::InitValueCtrl(AlgoParamType type, PLP_ALGORITHM_PARAM pParam) { break; } - //case LP_ALGO: - //{ - // ui->lineEdit_2->setHidden(true); - // m_valueCombox.setHidden(false); - // m_valueCombox.clear(); - // int nCurrentIndex = 0; - // int nAlgoCount = m_pTask->EnumAlgorithm(NULL, 0); - // if (nAlgoCount > 0) - // { - // IDetectorAlgorithm** lppAlgo = new IDetectorAlgorithm*[nAlgoCount]; - // nAlgoCount = m_pTask->EnumAlgorithm(lppAlgo, nAlgoCount); - // for (int i = 0; i < nAlgoCount; i++) - // { - // if (lppAlgo[i]) - // { - // m_valueCombox.insertItem(i, lppAlgo[i]->GetAlgorithmInfo()->strName, lppAlgo[i]->GetID()); - - // if (pParam && lppAlgo[i]->GetID() == pParam->value.toInt()) - // { - // nCurrentIndex = i; - // } - // } - - // } - // } - - // if (pParam) - // m_valueCombox.setCurrentIndex(nCurrentIndex); - - // break; - //} default: break; } @@ -493,14 +376,10 @@ QVariant CDsgParamDlg::GetCtrlValue(AlgoParamType type) } case LP_MAT: { - + break; } - //case LP_ALGO: - //{ - // return m_valueCombox.itemData(m_valueCombox.currentIndex()).toInt(); - //} default: break; } return NULL; -} \ No newline at end of file +} diff --git a/src/lpbdesigner/DsgParamDlg.h b/src/lpbdesigner/DsgParamDlg.h index db13c92..76b9f3e 100644 --- a/src/lpbdesigner/DsgParamDlg.h +++ b/src/lpbdesigner/DsgParamDlg.h @@ -40,7 +40,7 @@ public slots : private: Ui::ParamDlg *ui{ nullptr }; QComboBox m_valueCombox; - CDsgRoiDlg m_tRoiDlg; + CDsgRoiDlg* m_pRoiDlg{ nullptr }; IDetectorEngine* m_pDE{ nullptr }; IDetectorTask* m_pTask{ nullptr }; diff --git a/src/lpbdesigner/DsgRoiDlg.cpp b/src/lpbdesigner/DsgRoiDlg.cpp index ac1486a..a1b3524 100644 --- a/src/lpbdesigner/DsgRoiDlg.cpp +++ b/src/lpbdesigner/DsgRoiDlg.cpp @@ -3,12 +3,7 @@ #include "colossusbase.h" #include "QPalette" #pragma execution_character_set("utf-8") -/* -RECTANGLE = 0, -CIRCLE, -ELLIPSE, -POLY -*/ + bool subDevListSort(const Item_List &info1, const Item_List &info2) { if (info1.size() < 0 || info2.size() < 0) @@ -37,7 +32,6 @@ bool subDevListSort(const Item_List &info1, const Item_List &info2) CDsgRoiDlg::CDsgRoiDlg(QWidget *parent) : QDialog(parent), ui(new Ui::RoiDlg) { - m_pDE = NULL; m_pTask = NULL; @@ -46,36 +40,15 @@ CDsgRoiDlg::CDsgRoiDlg(QWidget *parent) : QDialog(parent), ui(new Ui::RoiDlg) SystemStateInfo::rgb = QColor(255, 0, 0).rgb(); connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(OnOk())); connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(OnCancel())); - //connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(OnRectangle())); connect(ui->pushButton_7, SIGNAL(clicked()), this, SLOT(OnCircle())); - //connect(ui->pushButton_4, SIGNAL(clicked()), this, SLOT(OnEllipse())); connect(ui->pushButton_8, SIGNAL(clicked()), this, SLOT(OnShowColorDlg())); ui->pushButton_8->setAutoDefault(false); -// connect(ui->pushButton_9, SIGNAL(clicked()), this, SLOT(OnSetItem())); - -// connect(ui->pushButton_10, SIGNAL(clicked()), this, SLOT(OnMove())); -// connect(ui->pushButton_11, SIGNAL(clicked()), this, SLOT(OnMove())); -// connect(ui->pushButton_12, SIGNAL(clicked()), this, SLOT(OnMove())); -// connect(ui->pushButton_13, SIGNAL(clicked()), this, SLOT(OnMove())); - -// connect(ui->pushButton_14, SIGNAL(clicked()), this, SLOT(OnSelectImage())); -// connect(ui->pushButton_15, SIGNAL(clicked()), this, SLOT(OnSnapCameraImage())); -// connect(ui->pushButton_16, SIGNAL(clicked()), this, SLOT(OnZoomOut())); -// connect(ui->pushButton_17, SIGNAL(clicked()), this, SLOT(OnZoomIn())); - - connect(this, SIGNAL(sgShowCameraImage(QImage)), this, SLOT(OnShowCameraImage(QImage))); - connect(ui->pushButton_5, SIGNAL(clicked()), this, SLOT(OnShowTenFlag())); ui->pushButton_5->setText(QObject::tr("显示定位线")); m_pRoiScene = new RoiScene(this); - //m_pRoiScene->SetRoiDlg(this); m_pRoiScene->SetGraphicsView(ui->graphicsView); m_pRoiScene->SetInfoLable(ui->label_pixel_info); -// Qt::WindowFlags flags = Qt::Dialog; -// flags |= Qt::WindowMinMaxButtonsHint; -// flags |= Qt::WindowCloseButtonHint; -// setWindowFlags(flags); } CDsgRoiDlg::~CDsgRoiDlg() @@ -85,34 +58,36 @@ CDsgRoiDlg::~CDsgRoiDlg() delete m_pRoiScene; m_pRoiScene = nullptr; } + if (ui) + { + delete ui; + ui = nullptr; + } } bool CDsgRoiDlg::Initialize(IDetectorEngine* pDE, IDetectorAlgorithm* pAlgo, IDetectorTask* pTask) { if (!pDE || !pAlgo || !pTask) return false; - m_pDE = pDE; m_pTask = pTask; - - if (!InitGraphView()) return false; - return true; } bool CDsgRoiDlg::InitGraphView() { - ui->pushButton_5->setText(QObject::tr("显示定位线")); - ui->graphicsView->setUserData(0, (QObjectUserData*)1); - ui->graphicsView->setScene(m_pRoiScene); + ui->pushButton_5->setText(QObject::tr("显示定位线")); ui->graphicsView->setRenderHint(QPainter::Antialiasing); - ui->graphicsView->setResizeAnchor(QGraphicsView::AnchorUnderMouse); ui->graphicsView->setTransformationAnchor(QGraphicsView::AnchorUnderMouse); - m_pRoiScene->updateTenItem(false); - m_pRoiScene->update(); + if (m_pRoiScene) + { + ui->graphicsView->setScene(m_pRoiScene); + m_pRoiScene->updateTenItem(false); + m_pRoiScene->update(); + } ui->graphicsView->update(); return true; @@ -120,7 +95,8 @@ bool CDsgRoiDlg::InitGraphView() bool CDsgRoiDlg::OnOk() { - //TODO 检查绑定内容 + if (!m_pRoiScene) + return false; QList items = m_pRoiScene->items(); QList temp; int nSize = items.size(); @@ -172,23 +148,16 @@ void CDsgRoiDlg::OnShowColorDlg() return ; QString strRGB = QString("(%1,%2,%3)").arg(QString::number(color.red()), QString::number(color.green()), QString::number(color.blue())); ui->lineEdit_3->setText(strRGB); - ui->lineEdit_3->setUserData(0, (QObjectUserData*)color.rgb()); QString strStyle = QString("background-color:rgba(%1,%2,%3,255);").arg(color.red()).arg(color.green()).arg(color.blue()); ui->lineEdit_3->setStyleSheet(strStyle); SystemStateInfo::rgb = color.rgb(); return; } -void CDsgRoiDlg::OnShowCameraImage(QImage img) -{ - m_tempRoiData.img = ColossusBase::QImage2cvMat(img).clone(); - m_pRoiScene->Initialize(m_tempRoiData); - m_pRoiScene->DisableMenu(false); - //m_pRoiScene->updateTenItem(true); -} - void CDsgRoiDlg::OnShowTenFlag() { + if (!m_pRoiScene) + return; QString strtext = ui->pushButton_5->text(); if (strtext == QObject::tr("显示定位线")) { @@ -202,32 +171,15 @@ void CDsgRoiDlg::OnShowTenFlag() } } -void __stdcall RoiImageEventHandler(void * callBackOwner, QImage& img, int nDeviceID) -{ - CDsgRoiDlg* p = (CDsgRoiDlg*)(callBackOwner); - emit p->sgShowCameraImage(img); -} - -void CDsgRoiDlg::OnSnapCameraImage() -{ -// DeviceType type; -// IDetectorCameraDevice* pCamera = (IDetectorCameraDevice*)m_pDeviceMgr->GetDevice(m_pTask->GetTaskInfo()->nCameraID, type); -// if (!pCamera && type != CAMERA) -// return; -// -// pCamera->SnapImage(this, RoiImageEventHandler); -} - void CDsgRoiDlg::OnSelectImage() { + if (!m_pRoiScene) + return; QString strFileName = QFileDialog::getOpenFileName(this, "open file", "", "Images (*.bmp *.png *.xpm *.jpg)"); if (strFileName.length() > 0) { std::string strpath = strFileName.toLocal8Bit().toStdString(); - m_tempRoiData.img = cv::imread(strpath/*strFileName.toLocal8Bit().data()*/, CV_LOAD_IMAGE_UNCHANGED); -// m_tempRoiData.img = cv::imread(strFileName.toLatin1().data()); -// m_pRoiScene->InitShowImage(m_tempRoiData.img); - + m_tempRoiData.img = cv::imread(strpath, CV_LOAD_IMAGE_UNCHANGED); m_pRoiScene->Initialize(m_tempRoiData); m_pRoiScene->DisableMenu(false); } @@ -243,34 +195,37 @@ LP_DETECTOR_ROI_DATA CDsgRoiDlg::ShowRoiDlg(LP_DETECTOR_ROI_DATA roiData) QColor color(SystemStateInfo::rgb); QString strRGB = QString("(%1,%2,%3)").arg(QString::number(color.red()), QString::number(color.green()), QString::number(color.blue())); ui->lineEdit_3->setText(strRGB); - ui->lineEdit_3->setUserData(0, (QObjectUserData*)color.rgb()); - QString strStyle = QString("background-color:rgba(%1,%2,%3,255);").arg(color.red()).arg(color.green()).arg(color.blue()); ui->lineEdit_3->setStyleSheet(strStyle); - QDesktopWidget* desktop = QApplication::desktop();// + QDesktopWidget* desktop = QApplication::desktop(); move((desktop->width() - this->width()) / 2, (desktop->height() - this->height()) / 2); if (this->exec() == QDialog::Accepted) { FillRoi(m_tempRoiData); - m_pRoiScene->DisableMenu(true); + if (m_pRoiScene) + { + m_pRoiScene->DisableMenu(true); + } SystemStateInfo::setIni.setValue(QStringLiteral("roi_color"), SystemStateInfo::rgb); return m_tempRoiData; } - - m_pRoiScene->DisableMenu(true); + if (m_pRoiScene) + { + m_pRoiScene->DisableMenu(true); + } return roiData; } bool CDsgRoiDlg::FillRoi(LP_DETECTOR_ROI_DATA& roiData) { + if (!m_pRoiScene) + return false; roiData.records.clear(); QList items = m_pRoiScene->items(); - QList temp; - int nSize = items.size(); for (int i = 0; i < nSize; i++) { @@ -288,189 +243,179 @@ bool CDsgRoiDlg::FillRoi(LP_DETECTOR_ROI_DATA& roiData) GraphicsItem *item = temp.at(j); Item_List record; { + + Feature_List tItem; + ItemType type = item->GetType(); + QRectF itemRect = item->mapRectToScene(item->boundingRect());; + QPointF itemPoint = item->pos() + m_pRoiScene->GetOffSet(); + + switch (type) { - Feature_List tItem; - ItemType type = item->GetType(); - QRectF itemRect = item->mapRectToScene(item->boundingRect());; - QPointF itemPoint = item->pos() + m_pRoiScene->GetOffSet(); - - switch (type) - { - case GraphicsRect: - { - tItem.first = RECTANGLE; - - if (!roiData.img.empty()){ - if (itemRect.x() < -(roiData.img.cols / 2)) - { - itemRect.setX(-(roiData.img.cols / 2)); - itemPoint.setX(itemPoint.x() + itemRect.width()); - } - if (itemRect.y() < -(roiData.img.rows / 2)) - { - itemRect.setY(-(roiData.img.rows / 2)); - itemPoint.setY(itemPoint.y() + itemRect.width()); - } - - if (itemRect.x() + itemRect.width() > roiData.img.cols / 2) - { - int width = itemRect.width(); - itemRect.setX(roiData.img.cols / 2 - width); - itemRect.setWidth(width); - itemPoint.setX(itemPoint.x() - width / 2); - } - if (itemRect.y() + itemRect.height() > roiData.img.rows / 2) - { - int width = itemRect.height(); - itemRect.setY(roiData.img.rows / 2 - width); - itemRect.setHeight(width); - itemPoint.setY(itemPoint.y() - width / 2); - } - - if (itemRect.width() > roiData.img.cols / 2 || itemRect.height() > roiData.img.rows / 2) - { - itemRect.setWidth(roiData.img.cols); - itemRect.setHeight(roiData.img.rows); - itemPoint.setY(roiData.img.rows / 2); - itemPoint.setX(roiData.img.cols / 2); - } + case GraphicsRect: + { + tItem.first = RECTANGLE; + + if (!roiData.img.empty()) { + if (itemRect.x() < -(roiData.img.cols / 2)) + { + itemRect.setX(-(roiData.img.cols / 2)); + itemPoint.setX(itemPoint.x() + itemRect.width()); + } + if (itemRect.y() < -(roiData.img.rows / 2)) + { + itemRect.setY(-(roiData.img.rows / 2)); + itemPoint.setY(itemPoint.y() + itemRect.width()); } - tItem.second.push_back(itemPoint.x()); - tItem.second.push_back(itemPoint.y()); - tItem.second.push_back(itemRect.width()); - tItem.second.push_back(itemRect.height()); - break; - } - case GraphicsCircle: - { - tItem.first = CIRCLE; - - if (!roiData.img.empty()){ - if (itemRect.x() < -(roiData.img.cols/2)) - { - itemRect.setX(-(roiData.img.cols / 2)); - itemPoint.setX(itemPoint.x() + itemRect.width()); - } - if (itemRect.y() < -(roiData.img.rows / 2)) - { - itemRect.setY(-(roiData.img.rows / 2)); - itemPoint.setY(itemPoint.y() + itemRect.width()); - } - - if (itemRect.x()+itemRect.width() > roiData.img.cols / 2) - { - int width = itemRect.width(); - itemRect.setX(roiData.img.cols / 2-width); - itemRect.setWidth(width); - itemPoint.setX(itemPoint.x() - width / 2); - } - if (itemRect.y() + itemRect.width() > roiData.img.rows / 2) - { - int width = itemRect.width(); - itemRect.setY(roiData.img.rows / 2-width); - itemRect.setWidth(width); - itemPoint.setY(itemPoint.y() - width / 2); - } - - if (itemRect.width() > roiData.img.rows/2||itemRect.height()>roiData.img.cols/2) - { - int minWidth = 100; - if (roiData.img.rows > roiData.img.cols) - minWidth = roiData.img.cols; - else - minWidth = roiData.img.rows; - itemRect.setWidth(minWidth); - itemRect.setHeight(minWidth); - itemPoint.setY(roiData.img.rows / 2); - itemPoint.setX(roiData.img.cols / 2); - } + if (itemRect.x() + itemRect.width() > roiData.img.cols / 2) + { + int width = itemRect.width(); + itemRect.setX(roiData.img.cols / 2 - width); + itemRect.setWidth(width); + itemPoint.setX(itemPoint.x() - width / 2); + } + if (itemRect.y() + itemRect.height() > roiData.img.rows / 2) + { + int width = itemRect.height(); + itemRect.setY(roiData.img.rows / 2 - width); + itemRect.setHeight(width); + itemPoint.setY(itemPoint.y() - width / 2); } - - tItem.second.push_back(itemPoint.x()); - tItem.second.push_back(itemPoint.y()); - tItem.second.push_back(itemRect.width() / 2); - break; + if (itemRect.width() > roiData.img.cols / 2 || itemRect.height() > roiData.img.rows / 2) + { + itemRect.setWidth(roiData.img.cols); + itemRect.setHeight(roiData.img.rows); + itemPoint.setY(roiData.img.rows / 2); + itemPoint.setX(roiData.img.cols / 2); + } } - case GraphicsEllipse: - { - if (!roiData.img.empty()){ - if (itemRect.x() < -(roiData.img.cols / 2)) - { - itemRect.setX(-(roiData.img.cols / 2)); - itemPoint.setX(itemPoint.x() + itemRect.width()); - } - if (itemRect.y() < -(roiData.img.rows / 2)) - { - itemRect.setY(-(roiData.img.rows / 2)); - itemPoint.setY(itemPoint.y() + itemRect.width()); - } - - if (itemRect.x() + itemRect.width() > roiData.img.cols / 2) - { - int width = itemRect.width(); - itemRect.setX(roiData.img.cols / 2 - width); - itemRect.setWidth(width); - itemPoint.setX(itemPoint.x() - width / 2); - } - if (itemRect.y() + itemRect.height() > roiData.img.rows / 2) - { - int width = itemRect.height(); - itemRect.setY(roiData.img.rows / 2 - width); - itemRect.setHeight(width); - itemPoint.setY(itemPoint.y() - width / 2); - } - - if (itemRect.width() > roiData.img.cols / 2 || itemRect.height() > roiData.img.rows / 2) - { - itemRect.setWidth(roiData.img.cols); - itemRect.setHeight(roiData.img.rows); - itemPoint.setY(roiData.img.rows / 2); - itemPoint.setX(roiData.img.cols / 2); - } + + tItem.second.push_back(itemPoint.x()); + tItem.second.push_back(itemPoint.y()); + tItem.second.push_back(itemRect.width()); + tItem.second.push_back(itemRect.height()); + break; + } + case GraphicsCircle: + { + tItem.first = CIRCLE; + + if (!roiData.img.empty()) { + if (itemRect.x() < -(roiData.img.cols / 2)) + { + itemRect.setX(-(roiData.img.cols / 2)); + itemPoint.setX(itemPoint.x() + itemRect.width()); + } + if (itemRect.y() < -(roiData.img.rows / 2)) + { + itemRect.setY(-(roiData.img.rows / 2)); + itemPoint.setY(itemPoint.y() + itemRect.width()); } - tItem.first = ELLIPSE; - tItem.second.push_back(itemPoint.x()); - tItem.second.push_back(itemPoint.y()); - tItem.second.push_back(itemRect.width() / 2); - tItem.second.push_back(itemRect.height() / 2); - break; - } - case GraphicsPoly: - break; - default: - break; + if (itemRect.x() + itemRect.width() > roiData.img.cols / 2) + { + int width = itemRect.width(); + itemRect.setX(roiData.img.cols / 2 - width); + itemRect.setWidth(width); + itemPoint.setX(itemPoint.x() - width / 2); + } + if (itemRect.y() + itemRect.width() > roiData.img.rows / 2) + { + int width = itemRect.width(); + itemRect.setY(roiData.img.rows / 2 - width); + itemRect.setWidth(width); + itemPoint.setY(itemPoint.y() - width / 2); + } + + if (itemRect.width() > roiData.img.rows / 2 || itemRect.height() > roiData.img.cols / 2) + { + int minWidth = 100; + if (roiData.img.rows > roiData.img.cols) + minWidth = roiData.img.cols; + else + minWidth = roiData.img.rows; + itemRect.setWidth(minWidth); + itemRect.setHeight(minWidth); + itemPoint.setY(roiData.img.rows / 2); + itemPoint.setX(roiData.img.cols / 2); + } } - record.push_back(tItem); + + + tItem.second.push_back(itemPoint.x()); + tItem.second.push_back(itemPoint.y()); + tItem.second.push_back(itemRect.width() / 2); + break; } + case GraphicsEllipse: + { + if (!roiData.img.empty()) { + if (itemRect.x() < -(roiData.img.cols / 2)) + { + itemRect.setX(-(roiData.img.cols / 2)); + itemPoint.setX(itemPoint.x() + itemRect.width()); + } + if (itemRect.y() < -(roiData.img.rows / 2)) + { + itemRect.setY(-(roiData.img.rows / 2)); + itemPoint.setY(itemPoint.y() + itemRect.width()); + } - records.push_back(record); - + if (itemRect.x() + itemRect.width() > roiData.img.cols / 2) + { + int width = itemRect.width(); + itemRect.setX(roiData.img.cols / 2 - width); + itemRect.setWidth(width); + itemPoint.setX(itemPoint.x() - width / 2); + } + if (itemRect.y() + itemRect.height() > roiData.img.rows / 2) + { + int width = itemRect.height(); + itemRect.setY(roiData.img.rows / 2 - width); + itemRect.setHeight(width); + itemPoint.setY(itemPoint.y() - width / 2); + } + + if (itemRect.width() > roiData.img.cols / 2 || itemRect.height() > roiData.img.rows / 2) + { + itemRect.setWidth(roiData.img.cols); + itemRect.setHeight(roiData.img.rows); + itemPoint.setY(roiData.img.rows / 2); + itemPoint.setX(roiData.img.cols / 2); + } + } - //delete[] lppItem; - delete item; + tItem.first = ELLIPSE; + tItem.second.push_back(itemPoint.x()); + tItem.second.push_back(itemPoint.y()); + tItem.second.push_back(itemRect.width() / 2); + tItem.second.push_back(itemRect.height() / 2); + break; + } + case GraphicsPoly: + break; + default: + break; + } + record.push_back(tItem); } + records.push_back(record); + delete item; } if (records.size() > 1){ //排序 ROI最小的放在前面 qSort(records.begin(), records.end(), subDevListSort); } - roiData.records=records;// + roiData.records = records; return true; } -void CDsgRoiDlg::CleanUp() -{ -} - void CDsgRoiDlg::OnMove() { if (!m_pRoiScene) return; - if (sender()->objectName() == "pushButton_10") { m_pRoiScene->MoveSelectedItem(LEFT); @@ -490,87 +435,24 @@ void CDsgRoiDlg::OnMove() } -void CDsgRoiDlg::OnSetItem() -{ - //QList items = m_pTaskScene->items(); - - //GraphicsItem *item1; - //GraphicsItem *item2; - - //int nSize = items.size(); - //for (int i = 0; i < nSize; i++) - //{ - // GraphicsItem *item = qgraphicsitem_cast(items.at(i)); - // if (item && item->GetType() == GraphicsRect) - // { - // - // item1 = item; - // } - - // if (item && item->GetType() == GraphicsCircle) - // { - // item2 = item; - // } - - //} - - //QList temp1 = item1->collidingItems(Qt::ContainsItemShape); - // int b = temp1.size(); - - //for (int k = 0; k < b; k++) - //{ - // int aa = temp1.at(k)->type(); - // int bb = temp1.at(k)->Type; - //} - - //QList temp2 = item2->collidingItems(Qt::ContainsItemShape); - //int c = temp2.size(); - - //bool bRet1 = item1->collidesWithItem(item2, Qt::ContainsItemShape); - //bool bRet2 = item2->collidesWithItem(item1, Qt::ContainsItemShape); - //QPointF pos1 = item1->pos(); - //QPointF pos2 = item2->pos(); - //int a = 0; -// QPoint pos; -// QRect size; -// pos.setX(ui->lineEdit_4->text().toInt() - m_pRoiScene->GetOffSet().x()); -// pos.setY(ui->lineEdit_5->text().toInt() - m_pRoiScene->GetOffSet().y()); -// size.setWidth(ui->lineEdit_6->text().toInt()); -// size.setHeight(ui->lineEdit_7->text().toInt()); -// m_pRoiScene->SetSelectedItem(pos, size); -} - -void CDsgRoiDlg::ResetItem(QPoint pos, QRect size) -{ -// ui->lineEdit_4->clear(); -// ui->lineEdit_5->clear(); -// ui->lineEdit_6->clear(); -// ui->lineEdit_7->clear(); -// -// ui->lineEdit_4->setText(QString::number(pos.x())); -// ui->lineEdit_5->setText(QString::number(pos.y())); -// -// ui->lineEdit_6->setText(QString::number(size.width())); -// ui->lineEdit_7->setText(QString::number(size.height())); -} - void CDsgRoiDlg::showEvent(QShowEvent *evt) { + if (!m_pRoiScene) + return; m_pRoiScene->Initialize(m_tempRoiData); m_pRoiScene->DisableMenu(false); - -// ui->lineEdit_4->clear(); -// ui->lineEdit_5->clear(); -// ui->lineEdit_6->clear(); -// ui->lineEdit_7->clear(); } void CDsgRoiDlg::OnZoomIn() { + if (!m_pRoiScene) + return; m_pRoiScene->zoomImage(true); } void CDsgRoiDlg::OnZoomOut() { + if (!m_pRoiScene) + return; m_pRoiScene->zoomImage(false); } diff --git a/src/lpbdesigner/DsgRoiDlg.h b/src/lpbdesigner/DsgRoiDlg.h index ebc5671..e86b3ad 100644 --- a/src/lpbdesigner/DsgRoiDlg.h +++ b/src/lpbdesigner/DsgRoiDlg.h @@ -10,7 +10,7 @@ namespace Ui { class RoiDlg; } -class CDsgRoiDlg : public QDialog//, public IDetectorUISink +class CDsgRoiDlg : public QDialog { Q_OBJECT public: @@ -19,17 +19,11 @@ public: bool Initialize(IDetectorEngine* pDE, IDetectorAlgorithm* pAlgo, IDetectorTask* pTask); bool InitGraphView(); LP_DETECTOR_ROI_DATA ShowRoiDlg(LP_DETECTOR_ROI_DATA roiData); - void CleanUp(); bool FillRoi(LP_DETECTOR_ROI_DATA& roiData); - - virtual void ResetItem(QPoint pos, QRect size); virtual void OnManualTrigger(){} virtual void OnSetParam(IDetectorTask* pTask){} virtual void showEvent(QShowEvent *evt); - -signals: - void sgShowCameraImage(QImage); public slots : bool OnOk(); bool OnCancel(); @@ -38,15 +32,9 @@ public slots : void OnCircle(); void OnShowColorDlg(); void OnMove(); - void OnSetItem(); void OnZoomIn(); void OnZoomOut(); - void OnSelectImage(); - void OnSnapCameraImage(); - - void OnShowCameraImage(QImage img); - void OnShowTenFlag(); private: Ui::RoiDlg *ui; diff --git a/src/lpbdesigner/MainFrame.cpp b/src/lpbdesigner/MainFrame.cpp index f6ea448..0542230 100644 --- a/src/lpbdesigner/MainFrame.cpp +++ b/src/lpbdesigner/MainFrame.cpp @@ -177,7 +177,6 @@ bool CMainFrame::OnMainMenuTrigger(QAction* pAction) return false; } } - return false; } @@ -1186,7 +1185,6 @@ bool CMainFrame::OnEditParam() return true; } } - } return false; } diff --git a/src/lpbdesigner/RoiDlg.ui b/src/lpbdesigner/RoiDlg.ui index f605aa6..74604e9 100644 --- a/src/lpbdesigner/RoiDlg.ui +++ b/src/lpbdesigner/RoiDlg.ui @@ -13,11 +13,6 @@ 590 - - - 12 - - ROI检测区域配置 @@ -85,11 +80,6 @@ 16777215 - - - 10 - - 工具 @@ -187,11 +177,6 @@ - - - 12 - - 绘图区域: @@ -213,14 +198,6 @@ - - - Arial - 8 - 50 - false - - Pixel info: diff --git a/src/lpbdesigner/RoiScene.cpp b/src/lpbdesigner/RoiScene.cpp index 6258182..1a611ed 100644 --- a/src/lpbdesigner/RoiScene.cpp +++ b/src/lpbdesigner/RoiScene.cpp @@ -36,7 +36,6 @@ RoiScene::~RoiScene() delete pTenLineITemH; if (pTenLineITemV) delete pTenLineITemV; - } void RoiScene::mouseEvent(QGraphicsSceneMouseEvent *mouseEvent) @@ -286,62 +285,56 @@ void RoiScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) void RoiScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) { - + if (DrawTool::c_drawShape == selection) { - if (DrawTool::c_drawShape == selection) - { - QList items = this->selectedItems(); - GraphicsItem *item = 0; - if (items.count() == 1) - item = qgraphicsitem_cast(items.first()); - if (item == 0) - return; - if(item->GetLock()) - return; - - DrawTool * tool = DrawTool::findTool(DrawTool::c_drawShape); - m_tCurrentPos = maptoImgPos(mouseEvent->scenePos()); - updateInfoLable(); - if (tool) - tool->mouseMoveEvent(mouseEvent, this); - QGraphicsScene::mouseMoveEvent(mouseEvent); - } - else - { - DrawTool * tool = DrawTool::findTool(DrawTool::c_drawShape); - m_tCurrentPos = maptoImgPos(mouseEvent->scenePos()); - updateInfoLable(); - if (tool) - tool->mouseMoveEvent(mouseEvent, this); - QGraphicsScene::mouseMoveEvent(mouseEvent); - } - } -} + QList items = this->selectedItems(); + GraphicsItem *item = 0; + if (items.count() == 1) + item = qgraphicsitem_cast(items.first()); + if (item == 0) + return; + if(item->GetLock()) + return; -void RoiScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) -{ - + DrawTool * tool = DrawTool::findTool(DrawTool::c_drawShape); + m_tCurrentPos = maptoImgPos(mouseEvent->scenePos()); + updateInfoLable(); + if (tool) + tool->mouseMoveEvent(mouseEvent, this); + QGraphicsScene::mouseMoveEvent(mouseEvent); + } + else { DrawTool * tool = DrawTool::findTool(DrawTool::c_drawShape); + m_tCurrentPos = maptoImgPos(mouseEvent->scenePos()); + updateInfoLable(); if (tool) - tool->mouseReleaseEvent(mouseEvent, this); + tool->mouseMoveEvent(mouseEvent, this); + QGraphicsScene::mouseMoveEvent(mouseEvent); + } +} - QList items = this->selectedItems(); - GraphicsItem *item = 0; +void RoiScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + DrawTool * tool = DrawTool::findTool(DrawTool::c_drawShape); + if (tool) + tool->mouseReleaseEvent(mouseEvent, this); - if (items.count() == 1) - item = qgraphicsitem_cast(items.first()); + QList items = this->selectedItems(); + GraphicsItem *item = 0; - if (item != 0) - { - //m_pRoiDlg->ResetItem(maptoImgPos(mouseEvent->scenePos()), item->boundingRect().toRect()); - emit sgResetItem(maptoImgPos(mouseEvent->scenePos()), item->boundingRect().toRect()); + if (items.count() == 1) + item = qgraphicsitem_cast(items.first()); - m_graphItemMapStruct[item].rectf = maptoImgNewPos(item); - DrawTool::c_drawShape = selection; - QGraphicsScene::mouseReleaseEvent(mouseEvent); - } + if (item != 0) + { + //m_pRoiDlg->ResetItem(maptoImgPos(mouseEvent->scenePos()), item->boundingRect().toRect()); + emit sgResetItem(maptoImgPos(mouseEvent->scenePos()), item->boundingRect().toRect()); + m_graphItemMapStruct[item].rectf = maptoImgNewPos(item); + DrawTool::c_drawShape = selection; + QGraphicsScene::mouseReleaseEvent(mouseEvent); } + } void RoiScene::MoveSelectedItem(DirType type) @@ -427,7 +420,6 @@ void RoiScene::keyPressEvent(QKeyEvent *event) return QGraphicsScene::keyPressEvent(event);; } - void RoiScene::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { QPointF p =event->pos(); @@ -534,7 +526,6 @@ void RoiScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) radiusFixAction = menu.addAction(QObject::tr("径向绑定")); radiusFixAction->setObjectName("radiusFixAction"); } - } } @@ -773,6 +764,8 @@ QPoint RoiScene::maptoImgPos(QPointF& iscenePos) void RoiScene::InitShowImage(cv::Mat img) { + if (!mpGraphicsView) + return; if (img.empty()) return; @@ -782,14 +775,9 @@ void RoiScene::InitShowImage(cv::Mat img) return; clear(); -// if (m_pImageItem) -// { -// m_pImageItem->setPixmap(QPixmap::fromImage(*mpShowImage)); -// } -// else - { - m_pImageItem = addPixmap(QPixmap::fromImage(*mpShowImage)); - } + + m_pImageItem = addPixmap(QPixmap::fromImage(*mpShowImage)); + mImgPosOffSet = QPoint(mpShowImage->width() / 2, mpShowImage->height() / 2); m_pImageItem->setOffset(-mpShowImage->width() / 2.0, -mpShowImage->height() / 2.0); @@ -798,27 +786,7 @@ void RoiScene::InitShowImage(cv::Mat img) mImgOriSize = mpShowImage->size(); qreal scale = std::min((qreal)mpGraphicsView->width() / mImgOriSize.width(), (qreal)mpGraphicsView->height() / mImgOriSize.height()); scaleImg(scale); - setSceneRect(-mImgOriSize.width() / 2, -mImgOriSize.height()/2, mImgOriSize.width(), mImgOriSize.height()); - -// QGraphicsLineItem *pTenLineITemH{ NULL }; -// QGraphicsLineItem *pTenLineITemV{ NULL }; - -// if (pTenLineITemH){ -// removeItem(pTenLineITemH); -// pTenLineITemH = NULL; -// } -// if (pTenLineITemV){ -// removeItem(pTenLineITemV); -// pTenLineITemV = NULL; -// } - -// QLine lineV(QPoint(0, -mImgOriSize.height()/2), QPoint(0, mImgOriSize.height()/2)); -// -// QLine lineH(QPoint(-mImgOriSize.width()/2, 0), QPoint(mImgOriSize.width()/2, 0)); -// QPen pen(Qt::green, 5); -// addLine(lineH, pen); -// addLine(lineV, pen); return; } diff --git a/src/lpbdesigner/RoiScene.h b/src/lpbdesigner/RoiScene.h index d94ba7c..ffbe4f0 100644 --- a/src/lpbdesigner/RoiScene.h +++ b/src/lpbdesigner/RoiScene.h @@ -46,79 +46,62 @@ public: explicit RoiScene(QObject *parent = 0); ~RoiScene(); int getGraphItems() const{ return m_graphItemMapStruct.size(); }; - void mouseEvent(QGraphicsSceneMouseEvent *mouseEvent)/*{}*/; - - bool Initialize(LP_DETECTOR_ROI_DATA roiData)/*{ return false; }*/; - bool CheckRecord(Item_List &record, int maxwidth, int maxheight)/*{ return false; }*/; - bool InitRecord(Item_List record, int nIndex)/*{ return false; }*/; - - void InitShowImage(cv::Mat img)/*{}*/; - - - void DisableMenu(bool bRet){ m_bDisableMenu = bRet; } - - void MoveSelectedItem(DirType type)/*{}*/; - void SetSelectedItem(QPoint pos, QRect size)/*{}*/; - //void SetRoiDlg(IDetectorUISink* lpRoiDlg){ m_pRoiDlg = lpRoiDlg; } + void mouseEvent(QGraphicsSceneMouseEvent *mouseEvent); + + bool Initialize(LP_DETECTOR_ROI_DATA roiData); + bool CheckRecord(Item_List &record, int maxwidth, int maxheight); + bool InitRecord(Item_List record, int nIndex); + void InitShowImage(cv::Mat img); + void DisableMenu(bool bRet) { m_bDisableMenu = bRet; } + void MoveSelectedItem(DirType type); + void SetSelectedItem(QPoint pos, QRect size); void SetGraphicsView(QGraphicsView* ipGV){ mpGraphicsView = ipGV; } void SetInfoLable(QLabel* ipLable){ mpInfoLabel = ipLable; } QPointF GetOffSet(){ return mImgPosOffSet; } - void zoomImage(bool bZoomIn)/*{}*/; - void scaleImageWithFixedViewSize()/*{}*/; - bool InImgRectangel(GraphicsItem *pItem)/*{ return false; }*/; + void zoomImage(bool bZoomIn); + void scaleImageWithFixedViewSize(); + bool InImgRectangel(GraphicsItem *pItem); QPointF getCenterPoint(){ return centerPoint; }; QPointF getStartPoint(){ return startPoint; }; - void updateLineItem()/*{}*/; - void updateTenItem(bool bFlag)/*{}*/; + void updateLineItem(); + void updateTenItem(bool bFlag); int flag{ 0 }; bool bUseTenFlag{ false }; signals: void sgResetItem(QPoint pos, QRect size); protected: - - void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)/*{}*/; - void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)/*{}*/; - void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)/*{}*/; - void wheelEvent(QGraphicsSceneWheelEvent * wheelEvent)/*{}*/; - void keyPressEvent(QKeyEvent *event)/*{}*/; - - void hoverEnterEvent(QGraphicsSceneHoverEvent *event)/*{}*/; - void hoverLeaveEvent(QGraphicsSceneHoverEvent * event)/*{}*/; - void hoverMoveEvent(QGraphicsSceneHoverEvent *event)/*{}*/; - void contextMenuEvent(QGraphicsSceneContextMenuEvent *event)/*{}*/; - void scaleImg(qreal scale)/*{}*/; - void updateInfoLable()/*{}*/; - QRectF maptoImgNewPos(GraphicsItem *pItem)/*{ return QRectF(); }*/; + void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent); + void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent); + void wheelEvent(QGraphicsSceneWheelEvent * wheelEvent); + void keyPressEvent(QKeyEvent *event); + + void hoverEnterEvent(QGraphicsSceneHoverEvent *event); + void hoverLeaveEvent(QGraphicsSceneHoverEvent * event); + void hoverMoveEvent(QGraphicsSceneHoverEvent *event); + void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); + void scaleImg(qreal scale); + void updateInfoLable(); + QRectF maptoImgNewPos(GraphicsItem *pItem); + QPoint maptoImgPos(QPointF& iscenePos); protected: QPoint m_tCurrentPos; - - QGraphicsPixmapItem* m_pImageItem; - + QGraphicsPixmapItem* m_pImageItem{ nullptr }; bool m_bDisableMenu; - - //IDetectorUISink* m_pRoiDlg; - - QGraphicsView* mpGraphicsView; - QLabel* mpInfoLabel; - + QGraphicsView* mpGraphicsView{ nullptr }; + QLabel* mpInfoLabel{ nullptr }; QSize mImgOriSize; - // position offset that should be applied to pos in img item's coordinate sys, - // to get the pos in img mat's coordinates (0, 0 on the left up corner) QPointF mImgPosOffSet; - - QImage* mpShowImage; - - QPoint maptoImgPos(QPointF& iscenePos)/*{ return QPoint(); }*/; + QImage* mpShowImage{ nullptr }; QPointF centerPoint; QPointF startPoint; - qreal mFixedSizeScale{1.0}; - //QMap m_graphItemMap; + qreal mFixedSizeScale{ 1.0 }; QMap m_graphItemMapStruct; - QGraphicsLineItem *pLineItem{ NULL }; + QGraphicsLineItem *pLineItem{ nullptr }; - QGraphicsLineItem *pTenLineITemH{ NULL }; - QGraphicsLineItem *pTenLineITemV{ NULL }; + QGraphicsLineItem *pTenLineITemH{ nullptr }; + QGraphicsLineItem *pTenLineITemV{ nullptr }; }; #endif // ROISCENE diff --git a/src/lpbdesigner/SizeHandle.cpp b/src/lpbdesigner/SizeHandle.cpp index bf18b43..b092406 100644 --- a/src/lpbdesigner/SizeHandle.cpp +++ b/src/lpbdesigner/SizeHandle.cpp @@ -51,7 +51,6 @@ void SizeHandleRect::updateCursor() void SizeHandleRect::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { QColor c = QColor("limegreen"); - // c.setAlpha(200); painter->setPen(Qt::NoPen); painter->setBrush(QBrush(c)); QRectF rectsize = rect(); diff --git a/tpvs17/tpMain/lpMainWin.cpp b/tpvs17/tpMain/lpMainWin.cpp index 31731a5..6258394 100644 --- a/tpvs17/tpMain/lpMainWin.cpp +++ b/tpvs17/tpMain/lpMainWin.cpp @@ -441,6 +441,11 @@ lpMainWin::~lpMainWin() delete m_pDllEngineCtrl; m_pDllEngineCtrl = nullptr; } + if (m_pDesigner) + { + delete m_pDesigner; + m_pDesigner = nullptr; + } } bool lpMainWin::onInitCoreCtrl()