#pragma once #include class AudioLevelMeter : public QWidget { Q_OBJECT public: explicit AudioLevelMeter(QWidget *parent = nullptr); void setLevel(float level); float level() const; float peakHold() const; void resetPeakHold(); QSize sizeHint() const override; QSize minimumSizeHint() const override; protected: void paintEvent(QPaintEvent *event) override; private: float m_level = 0.0f; float m_peakHold = 0.0f; int m_peakHoldFrames = 0; static constexpr int kPeakHoldDuration = 6; static constexpr float kPeakDecayRate = 0.02f; };