73 lines
3.3 KiB
C++
73 lines
3.3 KiB
C++
#include "chartpaint.h"
|
|
#include <QFont>
|
|
|
|
ChartPaint::ChartPaint(QWidget *parent): QWidget{parent}
|
|
{
|
|
|
|
}
|
|
|
|
QChartView *ChartPaint::Paint(QString type, int dataArray[])
|
|
{
|
|
// 创建柱状集合
|
|
QBarSet *set0 = new QBarSet("电量"); // 创建第一个柱状集合
|
|
QBarSet *set1 = new QBarSet("时间"); // 创建第二个柱状集合
|
|
*set0 << dataArray[0] << dataArray[1]; // 电量集合--累计充--累计放--日充--日放
|
|
*set1 << dataArray[2] << dataArray[3]; // 时间集合--累计充--累计放--日充--日放
|
|
|
|
// 创建柱状系列
|
|
QBarSeries *series0 = new QBarSeries(); // 创建第一个柱状系列
|
|
series0->append(set0); // 将第一个集合添加到第一个系列
|
|
series0->setLabelsVisible(true);
|
|
series0->setBarWidth(0.3);
|
|
// series0->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);
|
|
|
|
|
|
QBarSeries *series1 = new QBarSeries(); // 创建第二个柱状系列
|
|
series1->append(set1); // 将第二个集合添加到第二个系列
|
|
series1->setLabelsVisible(true);
|
|
series1->setBarWidth(0.3);
|
|
// series1->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);
|
|
|
|
// 创建图表
|
|
QChart *chart = new QChart(); // 创建图表对象
|
|
chart->addSeries(series0); // 将第一个系列添加到图表
|
|
chart->addSeries(series1); // 将第二个系列添加到图表
|
|
chart->setTitle(type + "充放电电量和时间柱状图"); // 设置图表标题
|
|
chart->setTitleFont(QFont("微软雅黑", 10, QFont::Bold));
|
|
|
|
// chart->setBackgroundBrush(QBrush(Qt::lightGray));
|
|
|
|
// 创建X轴
|
|
QBarCategoryAxis *axisX = new QBarCategoryAxis(); // 创建X轴
|
|
axisX->append(QStringList() << type + "充" << type + "放"); // 设置X轴的类别
|
|
chart->addAxis(axisX, Qt::AlignBottom); // 将X轴添加到图表底部
|
|
series0->attachAxis(axisX); // 将X轴附加到第一个系列
|
|
series1->attachAxis(axisX); // 将X轴附加到第二个系列
|
|
axisX->setLabelsFont(QFont("微软雅黑", 10, QFont::Bold));
|
|
|
|
// 创建第一个Y轴
|
|
QValueAxis *axisY1 = new QValueAxis(); // 创建第一个Y轴
|
|
axisY1->setRange(0, (std::max(dataArray[0], dataArray[1])) * 1.1); // 设置Y轴的范围
|
|
axisY1->setLabelFormat("%i"); // 设置Y轴标签格式
|
|
axisY1->setLabelsFont(QFont("微软雅黑", 10, QFont::Bold));
|
|
axisY1->setTitleText(type + "充放电量(kWh)"); // 设置Y轴标题
|
|
chart->addAxis(axisY1, Qt::AlignLeft); // 将第一个Y轴添加到图表左侧
|
|
series0->attachAxis(axisY1); // 将第一个系列附加到第一个Y轴
|
|
|
|
// 创建第二个Y轴
|
|
QValueAxis *axisY2 = new QValueAxis(); // 创建第二个Y轴
|
|
axisY2->setRange(0, (std::max(dataArray[2], dataArray[3])) * 1.2); // 设置Y轴的范围
|
|
axisY2->setLabelFormat("%i"); // 设置Y轴标签格式
|
|
axisY2->setLabelsFont(QFont("微软雅黑", 10, QFont::Bold));
|
|
axisY2->setTitleText(type + "充放时间(小时)"); // 设置Y轴标题
|
|
chart->addAxis(axisY2, Qt::AlignRight); // 将第二个Y轴添加到图表右侧
|
|
series1->attachAxis(axisY2); // 将第二个系列附加到第二个Y轴
|
|
|
|
|
|
// 创建图表视图
|
|
QChartView *chartView = new QChartView(chart); // 创建图表视图对象
|
|
chartView->setRenderHint(QPainter::Antialiasing); // 设置抗锯齿渲染
|
|
|
|
return chartView;
|
|
}
|