From 2cf86df6080f61362daed5c358ec80d65b97ec20 Mon Sep 17 00:00:00 2001 From: tangchao0503 <735056338@qq.com> Date: Fri, 20 Mar 2026 22:15:50 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E8=BF=87=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E5=AE=9E=E7=8E=B0=E5=8A=9F=E8=83=BD=EF=BC=9A?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=A0=8F=E6=98=BE=E7=A4=BA=E9=87=87=E9=9B=86?= =?UTF-8?q?=E5=B8=A7=E6=95=B0=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HPPA/HPPA.cpp | 28 +++++++++++++++++- HPPA/HPPA.h | 4 +++ HPPA/HPPA.vcxproj | 2 ++ HPPA/HPPA.vcxproj.filters | 6 ++++ HPPA/recordFrameCounter.cpp | 57 +++++++++++++++++++++++++++++++++++++ HPPA/recordFrameCounter.h | 24 ++++++++++++++++ 6 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 HPPA/recordFrameCounter.cpp create mode 100644 HPPA/recordFrameCounter.h diff --git a/HPPA/HPPA.cpp b/HPPA/HPPA.cpp index bcdd751..b293816 100644 --- a/HPPA/HPPA.cpp +++ b/HPPA/HPPA.cpp @@ -82,6 +82,8 @@ HPPA::HPPA(QWidget* parent) //ui.statusBar->addPermanentWidget(xmotor_state_label1); //ui.statusBar->addPermanentWidget(ymotor_state_label1); + m_recordFrameCounter = new recordFrameCounter(this); + ui.statusBar->addWidget(m_recordFrameCounter); connect(this->ui.action_exit, SIGNAL(triggered()), this, SLOT(onExit())); connect(this->ui.mActionOpenImg, SIGNAL(triggered()), this, SLOT(onOpenImg())); @@ -1043,6 +1045,10 @@ void HPPA::removeLayerByTreeIndex() const int tabIndex = m_imageViewerTabWidget->indexOf(layerWidget); if (tabIndex >= 0) { + if (m_recordFrameCounter) + { + m_recordFrameCounter->removeCounter(layerWidget); + } m_imageViewerTabWidget->removeTab(tabIndex); } layerWidget->deleteLater(); @@ -1095,6 +1101,10 @@ void HPPA::removeAllLayersInRasterGroup() const int tabIndex = m_imageViewerTabWidget->indexOf(layerWidget); if (tabIndex >= 0) { + if (m_recordFrameCounter) + { + m_recordFrameCounter->removeCounter(layerWidget); + } m_imageViewerTabWidget->removeTab(tabIndex); } layerWidget->deleteLater(); @@ -1405,7 +1415,7 @@ void HPPA::onStartRecordStep1() removeAllLayersInRasterGroup(); m_Imager->setFileName2Save(imgPath); - m_Imager->setFrameNumber(this->frame_number->text().toInt()); + m_Imager->setFrameNumber(this->frame_number->text().toInt()); m_tmc->setImager(m_Imager); m_tmc->setPosFileName(QString::fromStdString(x_location)); m_tmc->run(); @@ -1451,6 +1461,11 @@ QWidget* HPPA::onCreateTab(QString tabName) m_imageViewerTabWidget->setCurrentIndex(m_imageViewerTabWidget->count() - 1); + if (m_recordFrameCounter) + { + m_recordFrameCounter->addCounter(tabTmp); + } + return tabTmp; } @@ -1464,6 +1479,12 @@ void HPPA::onTabWidgetCurrentChanged(int index)//代码新建一个tab,会调 //记录当前 m_TabWidgetCurrentIndex = index; + if (m_recordFrameCounter) + { + QWidget* currentWidget = m_imageViewerTabWidget->widget(index); + m_recordFrameCounter->switchTo(currentWidget); + } + //获取绘图控件 QWidget* currentWidget = m_imageViewerTabWidget->widget(index); QList currentImageViewer = currentWidget->findChildren(); @@ -2065,6 +2086,11 @@ void HPPA::onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber, QSt QList currentImageViewer = currentWidget->findChildren(); currentImageViewer[0]->DisplayFrameNumber(m_Imager->getFrameCounter());//界面中显示已经采集的帧数 + if (m_recordFrameCounter) + { + m_recordFrameCounter->updateFrameCount(currentWidget, m_Imager->getFrameCounter()); + } + //创建需要显示的图像--opencv版本 ImageProcessor imageProcessor; //cv::Mat rgbImage(*m_Imager->getRgbImage()->m_matRgbImage, cv::Range(0, m_Imager->getFrameCounter()), cv::Range::all());//2022.3.18重构的 diff --git a/HPPA/HPPA.h b/HPPA/HPPA.h index 3e38408..e988644 100644 --- a/HPPA/HPPA.h +++ b/HPPA/HPPA.h @@ -71,6 +71,8 @@ #include "HyperImagerControl.h" +#include "recordFrameCounter.h" + #define PI 3.1415926 QT_CHARTS_USE_NAMESPACE//QChartView 使用 需要加宏, 否则无法使用 @@ -292,6 +294,8 @@ private: QWidget* m_focusTab=nullptr; + recordFrameCounter* m_recordFrameCounter = nullptr; + public Q_SLOTS: void onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber, QString filePath); void PlotSpectral(int state); diff --git a/HPPA/HPPA.vcxproj b/HPPA/HPPA.vcxproj index 29b6873..dce55e0 100644 --- a/HPPA/HPPA.vcxproj +++ b/HPPA/HPPA.vcxproj @@ -138,6 +138,7 @@ + @@ -220,6 +221,7 @@ + diff --git a/HPPA/HPPA.vcxproj.filters b/HPPA/HPPA.vcxproj.filters index d96661d..a8444f3 100644 --- a/HPPA/HPPA.vcxproj.filters +++ b/HPPA/HPPA.vcxproj.filters @@ -196,6 +196,9 @@ Source Files + + Source Files + @@ -318,6 +321,9 @@ Header Files + + Header Files + diff --git a/HPPA/recordFrameCounter.cpp b/HPPA/recordFrameCounter.cpp new file mode 100644 index 0000000..43bea9e --- /dev/null +++ b/HPPA/recordFrameCounter.cpp @@ -0,0 +1,57 @@ +#include "stdafx.h" +#include "recordFrameCounter.h" + +recordFrameCounter::recordFrameCounter(QWidget* parent) + : QWidget(parent) +{ + m_stackedWidget = new QStackedWidget(); + m_stackedWidget->setContentsMargins(0, 0, 0, 0); + + QHBoxLayout* layout = new QHBoxLayout(this); + layout->setContentsMargins(0, 0, 0, 0); + + QLabel* titleLabel = new QLabel(QString::fromLocal8Bit("帧数: ")); + titleLabel->setStyleSheet("color: white;"); + layout->addWidget(titleLabel); + layout->addWidget(m_stackedWidget); +} + +void recordFrameCounter::addCounter(QWidget* tabWidget) +{ + QLabel* label = new QLabel("0"); + label->setStyleSheet("color: white;"); + label->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); + m_labelMap.insert(tabWidget, label); + m_stackedWidget->addWidget(label); + m_stackedWidget->setCurrentWidget(label); +} + +void recordFrameCounter::removeCounter(QWidget* tabWidget) +{ + auto it = m_labelMap.find(tabWidget); + if (it != m_labelMap.end()) + { + QLabel* label = it.value(); + m_stackedWidget->removeWidget(label); + delete label; + m_labelMap.erase(it); + } +} + +void recordFrameCounter::switchTo(QWidget* tabWidget) +{ + auto it = m_labelMap.find(tabWidget); + if (it != m_labelMap.end()) + { + m_stackedWidget->setCurrentWidget(it.value()); + } +} + +void recordFrameCounter::updateFrameCount(QWidget* tabWidget, int frameCount) +{ + auto it = m_labelMap.find(tabWidget); + if (it != m_labelMap.end()) + { + it.value()->setText(QString::number(frameCount)); + } +} diff --git a/HPPA/recordFrameCounter.h b/HPPA/recordFrameCounter.h new file mode 100644 index 0000000..dc6ee3d --- /dev/null +++ b/HPPA/recordFrameCounter.h @@ -0,0 +1,24 @@ +#pragma once + +#include +#include +#include +#include +#include + +class recordFrameCounter : public QWidget +{ + Q_OBJECT +public: + explicit recordFrameCounter(QWidget* parent = nullptr); + + void addCounter(QWidget* tabWidget); + void removeCounter(QWidget* tabWidget); + void switchTo(QWidget* tabWidget); + void updateFrameCount(QWidget* tabWidget, int frameCount); + +private: + QStackedWidget* m_stackedWidget = nullptr; + QMap m_labelMap; +}; +