通过自定义控件实现功能:状态栏显示采集帧数;

This commit is contained in:
tangchao0503
2026-03-20 22:15:50 +08:00
parent d358989579
commit 2cf86df608
6 changed files with 120 additions and 1 deletions

View File

@ -82,6 +82,8 @@ HPPA::HPPA(QWidget* parent)
//ui.statusBar->addPermanentWidget(xmotor_state_label1); //ui.statusBar->addPermanentWidget(xmotor_state_label1);
//ui.statusBar->addPermanentWidget(ymotor_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.action_exit, SIGNAL(triggered()), this, SLOT(onExit()));
connect(this->ui.mActionOpenImg, SIGNAL(triggered()), this, SLOT(onOpenImg())); connect(this->ui.mActionOpenImg, SIGNAL(triggered()), this, SLOT(onOpenImg()));
@ -1043,6 +1045,10 @@ void HPPA::removeLayerByTreeIndex()
const int tabIndex = m_imageViewerTabWidget->indexOf(layerWidget); const int tabIndex = m_imageViewerTabWidget->indexOf(layerWidget);
if (tabIndex >= 0) if (tabIndex >= 0)
{ {
if (m_recordFrameCounter)
{
m_recordFrameCounter->removeCounter(layerWidget);
}
m_imageViewerTabWidget->removeTab(tabIndex); m_imageViewerTabWidget->removeTab(tabIndex);
} }
layerWidget->deleteLater(); layerWidget->deleteLater();
@ -1095,6 +1101,10 @@ void HPPA::removeAllLayersInRasterGroup()
const int tabIndex = m_imageViewerTabWidget->indexOf(layerWidget); const int tabIndex = m_imageViewerTabWidget->indexOf(layerWidget);
if (tabIndex >= 0) if (tabIndex >= 0)
{ {
if (m_recordFrameCounter)
{
m_recordFrameCounter->removeCounter(layerWidget);
}
m_imageViewerTabWidget->removeTab(tabIndex); m_imageViewerTabWidget->removeTab(tabIndex);
} }
layerWidget->deleteLater(); layerWidget->deleteLater();
@ -1405,7 +1415,7 @@ void HPPA::onStartRecordStep1()
removeAllLayersInRasterGroup(); removeAllLayersInRasterGroup();
m_Imager->setFileName2Save(imgPath); 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->setImager(m_Imager);
m_tmc->setPosFileName(QString::fromStdString(x_location)); m_tmc->setPosFileName(QString::fromStdString(x_location));
m_tmc->run(); m_tmc->run();
@ -1451,6 +1461,11 @@ QWidget* HPPA::onCreateTab(QString tabName)
m_imageViewerTabWidget->setCurrentIndex(m_imageViewerTabWidget->count() - 1); m_imageViewerTabWidget->setCurrentIndex(m_imageViewerTabWidget->count() - 1);
if (m_recordFrameCounter)
{
m_recordFrameCounter->addCounter(tabTmp);
}
return tabTmp; return tabTmp;
} }
@ -1464,6 +1479,12 @@ void HPPA::onTabWidgetCurrentChanged(int index)//代码新建一个tab会调
//记录当前 //记录当前
m_TabWidgetCurrentIndex = index; m_TabWidgetCurrentIndex = index;
if (m_recordFrameCounter)
{
QWidget* currentWidget = m_imageViewerTabWidget->widget(index);
m_recordFrameCounter->switchTo(currentWidget);
}
//获取绘图控件 //获取绘图控件
QWidget* currentWidget = m_imageViewerTabWidget->widget(index); QWidget* currentWidget = m_imageViewerTabWidget->widget(index);
QList<Mapcavas*> currentImageViewer = currentWidget->findChildren<Mapcavas*>(); QList<Mapcavas*> currentImageViewer = currentWidget->findChildren<Mapcavas*>();
@ -2065,6 +2086,11 @@ void HPPA::onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber, QSt
QList<Mapcavas*> currentImageViewer = currentWidget->findChildren<Mapcavas*>(); QList<Mapcavas*> currentImageViewer = currentWidget->findChildren<Mapcavas*>();
currentImageViewer[0]->DisplayFrameNumber(m_Imager->getFrameCounter());//界面中显示已经采集的帧数 currentImageViewer[0]->DisplayFrameNumber(m_Imager->getFrameCounter());//界面中显示已经采集的帧数
if (m_recordFrameCounter)
{
m_recordFrameCounter->updateFrameCount(currentWidget, m_Imager->getFrameCounter());
}
//创建需要显示的图像--opencv版本 //创建需要显示的图像--opencv版本
ImageProcessor imageProcessor; ImageProcessor imageProcessor;
//cv::Mat rgbImage(*m_Imager->getRgbImage()->m_matRgbImage, cv::Range(0, m_Imager->getFrameCounter()), cv::Range::all());//2022.3.18重构的 //cv::Mat rgbImage(*m_Imager->getRgbImage()->m_matRgbImage, cv::Range(0, m_Imager->getFrameCounter()), cv::Range::all());//2022.3.18重构的

View File

@ -71,6 +71,8 @@
#include "HyperImagerControl.h" #include "HyperImagerControl.h"
#include "recordFrameCounter.h"
#define PI 3.1415926 #define PI 3.1415926
QT_CHARTS_USE_NAMESPACE//QChartView 使用 需要加宏, 否则无法使用 QT_CHARTS_USE_NAMESPACE//QChartView 使用 需要加宏, 否则无法使用
@ -292,6 +294,8 @@ private:
QWidget* m_focusTab=nullptr; QWidget* m_focusTab=nullptr;
recordFrameCounter* m_recordFrameCounter = nullptr;
public Q_SLOTS: public Q_SLOTS:
void onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber, QString filePath); void onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber, QString filePath);
void PlotSpectral(int state); void PlotSpectral(int state);

View File

@ -138,6 +138,7 @@
<ClCompile Include="RasterDataProvider.cpp" /> <ClCompile Include="RasterDataProvider.cpp" />
<ClCompile Include="RasterLayer.cpp" /> <ClCompile Include="RasterLayer.cpp" />
<ClCompile Include="RasterRenderer.cpp" /> <ClCompile Include="RasterRenderer.cpp" />
<ClCompile Include="recordFrameCounter.cpp" />
<ClCompile Include="resononImager.cpp" /> <ClCompile Include="resononImager.cpp" />
<ClCompile Include="ResononNirImager.cpp" /> <ClCompile Include="ResononNirImager.cpp" />
<ClCompile Include="RgbCameraOperation.cpp" /> <ClCompile Include="RgbCameraOperation.cpp" />
@ -220,6 +221,7 @@
<QtMoc Include="MapTools.h" /> <QtMoc Include="MapTools.h" />
<ClInclude Include="RasterDataProvider.h" /> <ClInclude Include="RasterDataProvider.h" />
<ClInclude Include="RasterRenderer.h" /> <ClInclude Include="RasterRenderer.h" />
<QtMoc Include="recordFrameCounter.h" />
<ClInclude Include="utility_tc.h" /> <ClInclude Include="utility_tc.h" />
<QtMoc Include="aboutWindow.h" /> <QtMoc Include="aboutWindow.h" />
<ClInclude Include="hppaConfigFile.h" /> <ClInclude Include="hppaConfigFile.h" />

View File

@ -196,6 +196,9 @@
<ClCompile Include="HyperImagerControl.cpp"> <ClCompile Include="HyperImagerControl.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="recordFrameCounter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<QtMoc Include="fileOperation.h"> <QtMoc Include="fileOperation.h">
@ -318,6 +321,9 @@
<QtMoc Include="HyperImagerControl.h"> <QtMoc Include="HyperImagerControl.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</QtMoc> </QtMoc>
<QtMoc Include="recordFrameCounter.h">
<Filter>Header Files</Filter>
</QtMoc>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="imageProcessor.h"> <ClInclude Include="imageProcessor.h">

View File

@ -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));
}
}

24
HPPA/recordFrameCounter.h Normal file
View File

@ -0,0 +1,24 @@
#pragma once
#include <QWidget>
#include <QStackedWidget>
#include <QLabel>
#include <QHBoxLayout>
#include <QMap>
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<QWidget*, QLabel*> m_labelMap;
};