PowerMaster/dataPanel/dpBarsChart.h

87 lines
2.1 KiB
C
Raw Normal View History

2025-08-25 15:10:02 +08:00
#ifndef DPBARSCHART_H
#define DPBARSCHART_H
/*******************************************************************************
** DataPanel-BarsChart
** author dsc
**
** ()
** QCustomPlot实现
**
** CustomBars
** BarsQCPBars
**
2025-08-25 15:10:02 +08:00
******************************************************************************/
#include "dpBaseChart.h"
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; }
void setTextVisible(bool);
void setTextAlignment(Qt::Alignment);
void setSpacing(double);
void setFont(QFont);
protected:
virtual void draw(QCPPainter* painter) override;
private:
bool m_textVisible;
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:
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;
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;
//QCPBarsGroup* m_pBarsGroup;
2025-09-01 19:57:02 +08:00
QHash<QString, Bars> m_bars;
QHash<RealTimeDataType, QCPBarsGroup*> m_barsGroups;
bool m_updateData;
2025-08-25 15:10:02 +08:00
};
#endif