通过自定义控件实现功能:状态栏显示采集帧数;
This commit is contained in:
@ -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();
|
||||
@ -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<Mapcavas*> currentImageViewer = currentWidget->findChildren<Mapcavas*>();
|
||||
@ -2065,6 +2086,11 @@ void HPPA::onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber, QSt
|
||||
QList<Mapcavas*> currentImageViewer = currentWidget->findChildren<Mapcavas*>();
|
||||
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重构的
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -138,6 +138,7 @@
|
||||
<ClCompile Include="RasterDataProvider.cpp" />
|
||||
<ClCompile Include="RasterLayer.cpp" />
|
||||
<ClCompile Include="RasterRenderer.cpp" />
|
||||
<ClCompile Include="recordFrameCounter.cpp" />
|
||||
<ClCompile Include="resononImager.cpp" />
|
||||
<ClCompile Include="ResononNirImager.cpp" />
|
||||
<ClCompile Include="RgbCameraOperation.cpp" />
|
||||
@ -220,6 +221,7 @@
|
||||
<QtMoc Include="MapTools.h" />
|
||||
<ClInclude Include="RasterDataProvider.h" />
|
||||
<ClInclude Include="RasterRenderer.h" />
|
||||
<QtMoc Include="recordFrameCounter.h" />
|
||||
<ClInclude Include="utility_tc.h" />
|
||||
<QtMoc Include="aboutWindow.h" />
|
||||
<ClInclude Include="hppaConfigFile.h" />
|
||||
|
||||
@ -196,6 +196,9 @@
|
||||
<ClCompile Include="HyperImagerControl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="recordFrameCounter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<QtMoc Include="fileOperation.h">
|
||||
@ -318,6 +321,9 @@
|
||||
<QtMoc Include="HyperImagerControl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</QtMoc>
|
||||
<QtMoc Include="recordFrameCounter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</QtMoc>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="imageProcessor.h">
|
||||
|
||||
57
HPPA/recordFrameCounter.cpp
Normal file
57
HPPA/recordFrameCounter.cpp
Normal 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
24
HPPA/recordFrameCounter.h
Normal 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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user