EnergySpectrumAnalyer/src/2DSpectralCompliance/TwoDSpectralCompliance.h

88 lines
2.2 KiB
C
Raw Normal View History

2026-04-07 18:15:20 +08:00
#ifndef TWODSPECTRALCOMPLIANCE_H
#define TWODSPECTRALCOMPLIANCE_H
#include <MeasureAnalysisView.h>
#include <QPoint>
#include <QVector>
#include <QWidget>
2026-04-07 18:15:20 +08:00
class CustomQwtPlot;
class QwtPlotSpectrogram;
class QPushButton;
class QLineEdit;
class ScatterPlotItem;
class BusyIndicator;
2026-04-07 18:15:20 +08:00
namespace Ui {
class TwoDSpectralCompliance;
}
struct TwoSurfacePoint {
float primaryEnergy;
float secondaryEnergySum;
int count;
};
class TwoDSpectralCompliance : public MeasureAnalysisView {
2026-04-07 18:15:20 +08:00
Q_OBJECT
public:
explicit TwoDSpectralCompliance(QWidget* parent = nullptr);
2026-04-07 18:15:20 +08:00
~TwoDSpectralCompliance();
virtual void InitViewWorkspace(const QString& project_name) override final;
virtual void SetAnalyzeDataFilename(const QMap<QString, QVariant>& data_files_set) override;
protected:
void resizeEvent(QResizeEvent* event) override;
bool eventFilter(QObject* obj, QEvent* event) override;
virtual void showEvent(QShowEvent* e) override final;
2026-04-07 18:15:20 +08:00
private:
void setupPlot();
void readCsv(const QStringList& filename);
2026-04-07 18:15:20 +08:00
void generateSurfaceData();
void updateSpectrogram();
void createFloatingInfoWidget();
void updateInfoContent();
void updateToggleButtonText();
void updateFloatingWidgetPosition();
void updateToggleButtonPosition();
void updateShowButtonPosition();
private slots:
void showFloatingWidget();
void hideFloatingWidget();
2026-04-07 18:15:20 +08:00
private:
Ui::TwoDSpectralCompliance* ui;
2026-04-07 18:15:20 +08:00
CustomQwtPlot* _plot = nullptr;
QwtPlotSpectrogram* _spectrogram = nullptr;
struct EventData {
int eventId;
int board;
int channel;
double energy;
unsigned long long timeCounter;
};
QVector<EventData> m_rawData;
QVector<TwoSurfacePoint> m_surfaceData;
QWidget* m_floatingWidget = nullptr;
QPushButton* m_toggleButton = nullptr;
QPushButton* m_showButton = nullptr;
QLineEdit* m_totalEventsEdit = nullptr;
QLineEdit* m_totalPointsEdit = nullptr;
QLineEdit* m_maxCountEdit = nullptr;
QLineEdit* m_primRangeEdit = nullptr;
QLineEdit* m_secRangeEdit = nullptr;
QPoint m_dragPosition;
bool m_dragging = false;
BusyIndicator* _busy_indicator = nullptr;
2026-04-07 18:15:20 +08:00
};
#endif // TWODSPECTRALCOMPLIANCE_H