2025-08-25 15:10:02 +08:00
|
|
|
|
#ifndef DPBARSCHART_H
|
|
|
|
|
|
#define DPBARSCHART_H
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
|
** DataPanel-BarsChart
|
|
|
|
|
|
** author dsc
|
|
|
|
|
|
**
|
|
|
|
|
|
** 柱状图展示面板,用来展示统计数据(如各类报警、事件的数量)
|
|
|
|
|
|
** 采用QCustomPlot实现
|
|
|
|
|
|
**
|
2025-09-03 16:27:22 +08:00
|
|
|
|
** CustomBars
|
|
|
|
|
|
** 自定义Bars,继承自QCPBars,可以展示实时数据等信息
|
|
|
|
|
|
**
|
2025-08-25 15:10:02 +08:00
|
|
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
#include "dpBaseChart.h"
|
|
|
|
|
|
|
2025-09-03 16:27:22 +08:00
|
|
|
|
class CustomBars : public QCPBars
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
explicit CustomBars(QCPAxis* keyAxis, QCPAxis* valueAxis);
|
|
|
|
|
|
|
|
|
|
|
|
Qt::Alignment textAlignment() { return m_textAlignment; }
|
|
|
|
|
|
double spacing() { return m_spacing; }
|
|
|
|
|
|
QFont font() { return m_font; }
|
|
|
|
|
|
|
2025-09-05 14:54:34 +08:00
|
|
|
|
void setTextVisible(bool);
|
2025-09-03 16:27:22 +08:00
|
|
|
|
void setTextAlignment(Qt::Alignment);
|
|
|
|
|
|
void setSpacing(double);
|
|
|
|
|
|
void setFont(QFont);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
virtual void draw(QCPPainter* painter) override;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
2025-09-05 14:54:34 +08:00
|
|
|
|
bool m_textVisible;
|
2025-09-03 16:27:22 +08:00
|
|
|
|
Qt::Alignment m_textAlignment; //文字对齐方式
|
|
|
|
|
|
double m_spacing; //文字与柱状图之间的间距,单位为像素
|
|
|
|
|
|
QFont m_font; //文字的字体
|
|
|
|
|
|
};
|
2025-08-25 15:10:02 +08:00
|
|
|
|
|
|
|
|
|
|
class dpBarsChart : public dpBaseChart
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
dpBarsChart(QWidget *parent = nullptr);
|
|
|
|
|
|
~dpBarsChart();
|
|
|
|
|
|
|
|
|
|
|
|
void setTimeRange(TimeUnit) override;
|
|
|
|
|
|
void setDateTime(const QDateTime&) override;
|
|
|
|
|
|
void viewHistoricalData(const QDateTime&) override;
|
|
|
|
|
|
|
|
|
|
|
|
void synchronizeConfigData(const configurationResults&) override;
|
|
|
|
|
|
|
|
|
|
|
|
public slots:
|
2025-09-05 14:54:34 +08:00
|
|
|
|
void onSignal_dataUpdated(const QString& dataID, const QVariant& data, const QDateTime& timestamp);
|
2025-08-25 15:10:02 +08:00
|
|
|
|
|
|
|
|
|
|
private:
|
2025-09-01 19:57:02 +08:00
|
|
|
|
struct Bars
|
|
|
|
|
|
{
|
|
|
|
|
|
QColor color;
|
|
|
|
|
|
QString name;
|
|
|
|
|
|
QString dataID;
|
|
|
|
|
|
RealTimeDataType dataType;
|
|
|
|
|
|
QVector<double> keys;
|
2025-09-03 16:27:22 +08:00
|
|
|
|
QPointer<CustomBars> qBars;
|
2025-09-01 19:57:02 +08:00
|
|
|
|
|
|
|
|
|
|
Bars()
|
|
|
|
|
|
{
|
|
|
|
|
|
name = "";
|
|
|
|
|
|
dataID = "";
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2025-08-25 15:10:02 +08:00
|
|
|
|
void initQCP();
|
|
|
|
|
|
|
|
|
|
|
|
QCustomPlot* m_pCustomPlot;
|
|
|
|
|
|
ChartStyle m_chartStyle;
|
2025-09-02 16:28:32 +08:00
|
|
|
|
//QCPBarsGroup* m_pBarsGroup;
|
2025-09-01 19:57:02 +08:00
|
|
|
|
QHash<QString, Bars> m_bars;
|
2025-09-02 16:28:32 +08:00
|
|
|
|
QHash<RealTimeDataType, QCPBarsGroup*> m_barsGroups;
|
2025-09-05 14:54:34 +08:00
|
|
|
|
bool m_updateData;
|
2025-08-25 15:10:02 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|