Implemented qt port + e2e
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* @file StatsDialog.h
|
||||
* @brief Per-source statistics table + cycle-time histograms.
|
||||
*
|
||||
* Mirrors the ImGui StatsPanel: a metrics table (rate, lost, frags/bytes per
|
||||
* cycle, cycle ms avg/std/min/max) and a 20-bin cycle-time histogram per
|
||||
* source, drawn with a small QPainter bar widget.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Protocol.h"
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
class QTableWidget;
|
||||
class QVBoxLayout;
|
||||
|
||||
namespace shq {
|
||||
|
||||
class Hub;
|
||||
|
||||
/** Small bar-chart widget for a 20-bin cycle-time histogram. */
|
||||
class HistogramWidget : public QWidget {
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit HistogramWidget(QWidget* parent = nullptr);
|
||||
void setData(const StreamHubClient::SourceStats& st);
|
||||
QSize sizeHint() const override { return QSize(400, 120); }
|
||||
protected:
|
||||
void paintEvent(QPaintEvent*) override;
|
||||
private:
|
||||
double bins_[20] = {};
|
||||
double min_ = 0.0, max_ = 0.0;
|
||||
bool valid_ = false;
|
||||
};
|
||||
|
||||
class StatsDialog : public QDialog {
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit StatsDialog(Hub* hub, QWidget* parent = nullptr);
|
||||
|
||||
public Q_SLOTS:
|
||||
void refresh();
|
||||
|
||||
private:
|
||||
Hub* hub_;
|
||||
QTableWidget* table_ = nullptr;
|
||||
QVBoxLayout* histLay_ = nullptr;
|
||||
std::vector<HistogramWidget*> hists_;
|
||||
std::vector<QWidget*> histBlocks_;
|
||||
};
|
||||
|
||||
} /* namespace shq */
|
||||
Reference in New Issue
Block a user