1、演示效果

image-1658154862081

2、柱状图程序内容

#include "SWJ_SF_Bar_Chart.h"
#include <QtCharts/QChartView>
#include <QtCharts/QPieSeries>
#include <QtCharts/QPieSlice>
#include <QtCharts/QAbstractBarSeries>
#include <QtCharts/QPercentBarSeries>
#include <QtCharts/QStackedBarSeries>
#include <QtCharts/QBarSeries>
#include <QtCharts/QBarSet>
#include <QtCharts/QLineSeries>
#include <QtCharts/QSplineSeries>
#include <QtCharts/QScatterSeries>
#include <QtCharts/QAreaSeries>
#include <QtCharts/QLegend>
#include <QBarCategoryAxis>
#include <QHBoxLayout>
#include <QTimer>
#include <QDebug>
#include <QToolTip>
QT_CHARTS_USE_NAMESPACE
#pragma execution_character_set("utf-8")
#define FONT_SIZE_TEXT   8
struct sBarChart
{
	QBarSeries *pSeries = nullptr;
	QChart *pChart = nullptr;
	QBarCategoryAxis *pCategoryAxis = nullptr;
};

SWJ_SF_Bar_Chart::SWJ_SF_Bar_Chart(QWidget *parent)
	: QWidget(parent)
	,d_ptr(new sBarChart)
{
	d_ptr->pSeries = new QBarSeries();
	d_ptr->pChart = new QChart();
	d_ptr->pCategoryAxis = new QBarCategoryAxis();

	initial();

#if 0

	//创建线条
	QBarSet *set0 = new QBarSet("华为");
	QBarSet *set1 = new QBarSet("苹果");
	QBarSet *set2 = new QBarSet("三星");
	QBarSet *set3 = new QBarSet("小米");
	QBarSet *set4 = new QBarSet("OPPO");
	set0->setBorderColor(QColor(255, 128, 255));//没什么效果
	set0->setColor(QColor(255, 0, 255));//没什么效果
	//set0->setLabel("F");//F等效于Jane
	set0->setLabelColor(QColor(0, 255, 0));//没什么效果
	QFont font("微软雅黑");
	font.setBold(true);
	font.setPixelSize(13);
	set0->setLabelFont(font);//字体变大
	set1->setLabelFont(font);//字体变大
	set2->setLabelFont(font);//字体变大
	set3->setLabelFont(font);//字体变大
	set4->setLabelFont(font);//字体变大

	*set0 << 5420 << 3850 << 2789 << 2543 << 2167 << 1568;
	*set1 << 4130 << 4100 << 4578 << 3789 << 3256 << 2985;
	*set2 << 7150 << 7980 << 7345 << 6865 << 5784 << 4657;
	*set3 << 3190 << 2140 << 2865 << 2045 << 1836 << 1268;
	*set4 << 1137 << 2800 << 2645 << 1926 << 1369 << 1280;

	QBarSeries *series = new QBarSeries();
	series->append(set0);
	series->append(set1);
	series->append(set2);
	series->append(set3);
	series->append(set4);

	series->setVisible(true);//设置条形图是否可视化
	series->setBarWidth(0.7);//设置Bar宽
	series->setLabelsVisible(true);//设置标签是否可视化
	series->setLabelsAngle(0);//设置标签的角度
	series->setLabelsFormat("@value");//设置标签显示的格式
	series->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);//设置标签的位置
	series->setLabelsPrecision(50);//标签中显示的最大有效位数
	//series->setName("BLUE");//当创建多个Bar时才有效


	QChart *chart = new QChart();
	chart->setTitle("全球手机品牌销量");
	chart->addSeries(series);
	chart->setAnimationOptions(QChart::SeriesAnimations);
	chart->setTheme(QChart::ChartThemeDark);//设置系统主题
	chart->setAnimationOptions(QChart::AllAnimations);//设置启用或禁用动画
	//chart->setBackgroundBrush(QBrush(QColor(170,170,255)));//设置背景色,主题和背景二选一
	//chart->setDropShadowEnabled(true);//是否背景阴影
	chart->setLocalizeNumbers(true);//数字是否本地化
	//chart->legend()->show();//legend是否显示,show和hide
	chart->createDefaultAxes();//创建默认轴
	chart->setTitleBrush(QBrush(QColor(255, 255, 255)));//设置标题Brush
	chart->setTitleFont(QFont("微软雅黑"));//设置标题字体

	chart->legend()->setVisible(true);
	chart->legend()->setAlignment(Qt::AlignTop);//对齐
	//chart->legend()->detachFromChart();
	//chart->legend()->setBackgroundVisible(true);//设置背景是否可视
	//chart->legend()->setAutoFillBackground(true);//设置背景自动填充
	//chart->legend()->setColor(QColor(255,128,128,128));//设置颜色
	//chart->legend()->setContentsMargins(10,10,10,10);//设置边距left,top,right,bottom
	chart->legend()->setLabelColor(QColor(255, 128, 255));//设置标签颜色
	chart->legend()->setVisible(true);//设置是否可视
	//chart->legend()->setMaximumHeight(50);
	//chart->legend()->setMaximumWidth(120);
	//chart->legend()->setMaximumSize(10000);
	//chart->legend()->setGeometry(50,50,120,50);//设置几何位置x,y,w,h
	//chart->legend()->setBrush(QBrush(QColor(128,128,128,128)));
	//chart->legend()->setPen(QPen(QColor(192,192, 192,192)));
	chart->legend()->setBorderColor(QColor(255, 255, 255, 255));//设置边框颜色
	//QFont font = chart->legend()->font();
	//font.setItalic(!font.italic());
	//chart->legend()->setFont(font);//设置字体为斜体
	//font.setPointSizeF(12);
	//chart->legend()->setFont(font);//设置字体大小
	//chart->legend()->setFont(QFont("微软雅黑"));//设置字体类型

	QStringList categories;
	categories << "2018" << "2017" << "2016" << "2015" << "2014" << "2013";
	QBarCategoryAxis *axis = new QBarCategoryAxis();
	axis->append(categories);
	chart->setAxisX(axis, series);//设置X轴
	/*X轴*/
	chart->axisX(series)->setVisible(true);
	chart->axisX(series)->setRange(1000, 10000);//设置Y轴范围
	//X轴标题
	chart->axisX(series)->setTitleText("年份(年)");//设置Y轴标题
	chart->axisX(series)->setTitleBrush(QBrush(QColor(255, 170, 255)));
	chart->axisX(series)->setTitleFont(QFont("微软雅黑"));
	chart->axisX(series)->setTitleVisible(true);
	//X轴网格
	chart->axisX(series)->setGridLineColor(QColor(255, 255, 255));//设置Y轴网格线颜色
	chart->axisX(series)->setGridLineVisible(true);
	//chart->axisY(series)->setGridLinePen(QPen(QColor(50,255,50)));
	//X轴标签
	chart->axisX(series)->setLabelsAngle(0);
	//chart->axisY(series)->setLabelsBrush(QBrush(QColor(50,255,50)));
	chart->axisX(series)->setLabelsColor(QColor(255, 255, 255));
	chart->axisX(series)->setLabelsFont(QFont("Arial"));
	chart->axisX(series)->setLabelsVisible(true);
	//X轴轴线
	//chart->axisY(series)->setLinePen(QPen(QColor(50,255,50)));
	chart->axisX(series)->setLinePenColor(QColor(255, 255, 255));
	chart->axisX(series)->setLineVisible(true);
	chart->axisX(series)->setMax(90);
	chart->axisX(series)->setMin(10);
	//X轴子网格线
	chart->axisX(series)->setMinorGridLineColor(QColor(0, 0, 0));
	//chart->axisY(series)->setMinorGridLinePen(QPen(QColor(50,255,50)));
	chart->axisX(series)->setMinorGridLineVisible(true);

	//chart->axisX(series)->setReverse(true);//Y轴值反向
	//X轴阴影
	//chart->axisX(series)->setShadesVisible(true);//默认false
	//chart->axisX(series)->setShadesBorderColor(QColor(0,255,0));
	//chart->axisX(series)->setShadesColor(QColor(0,0,0));
	//chart->axisY(series)->setShadesBrush(QColor(0,0,0));
	//chart->axisY(series)->setShadesPen(QColor(0,0,0));

	/*Y轴*/
	chart->axisY(series)->setVisible(true);
	chart->axisY(series)->setRange(1000, 10000);//设置Y轴范围
	//Y轴标题
	chart->axisY(series)->setTitleText("手机销量(部)");//设置Y轴标题
	chart->axisY(series)->setTitleBrush(QBrush(QColor(255, 255, 255)));
	chart->axisY(series)->setTitleFont(QFont("微软雅黑"));
	chart->axisY(series)->setTitleVisible(true);
	//Y轴网格
	chart->axisY(series)->setGridLineColor(QColor(255, 255, 255));//设置Y轴网格线颜色
	chart->axisY(series)->setGridLineVisible(true);
	//chart->axisY(series)->setGridLinePen(QPen(QColor(50,255,50)));
	//Y轴标签
	chart->axisY(series)->setLabelsAngle(0);
	//chart->axisY(series)->setLabelsBrush(QBrush(QColor(50,255,50)));
	chart->axisY(series)->setLabelsColor(QColor(255, 255, 255));
	chart->axisY(series)->setLabelsFont(QFont("Arial"));
	chart->axisY(series)->setLabelsVisible(true);
	//Y轴轴线
	//chart->axisY(series)->setLinePen(QPen(QColor(50,255,50)));
	chart->axisY(series)->setLinePenColor(QColor(255, 255, 255));
	chart->axisY(series)->setLineVisible(true);
	//最大最小值相当于设置范围
	//chart->axisY(series)->setMax(90);
	//chart->axisY(series)->setMin(10);
	//Y轴子网格线
	chart->axisY(series)->setMinorGridLineColor(QColor(255, 255, 255));
	//chart->axisY(series)->setMinorGridLinePen(QPen(QColor(50,255,50)));
	//chart->axisY(series)->setMinorGridLineVisible(true);

	//chart->axisY(series)->setReverse(true);//Y轴值反向
	//Y轴阴影
	//chart->axisY(series)->setShadesVisible(true);//默认false
	//chart->axisY(series)->setShadesBorderColor(QColor(0,255,0));
	//chart->axisY(series)->setShadesColor(QColor(0,0,0));
	//chart->axisY(series)->setShadesBrush(QColor(0,0,0));
	//chart->axisY(series)->setShadesPen(QColor(0,0,0));




	QChartView *chartView = new QChartView(chart);
	chartView->setRenderHint(QPainter::Antialiasing);

	QHBoxLayout *hb = new QHBoxLayout(this);
	hb->setMargin(0);
	hb->addWidget(chartView);
	this->setContentsMargins(0, 0, 0, 0);

	QObject::connect(series, &QBarSeries::hovered, [](bool status, int index, QBarSet*barset)
	{
		if (status)
		{
			qreal value = barset->at(index);

			QToolTip::showText(QCursor::pos(), QString::number(value, 'f', 2));
		}

	});



#endif
}

SWJ_SF_Bar_Chart::~SWJ_SF_Bar_Chart()
{
}

void SWJ_SF_Bar_Chart::initial()
{
	QFont font("微软雅黑",15);
	font.setBold(true);

	d_ptr->pSeries->setVisible(true);                                            // 设置条形图是否可视化
	d_ptr->pSeries->setBarWidth(0.7);                                            // 设置Bar宽
	d_ptr->pSeries->setLabelsVisible(true);                                      // 设置标签是否可视化
	d_ptr->pSeries->setLabelsAngle(0);                                           // 设置标签的角度
	d_ptr->pSeries->setLabelsFormat("@value");                                   // 设置标签显示的格式
	d_ptr->pSeries->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);     // 设置标签的位置
	d_ptr->pSeries->setLabelsPrecision(50);                                      // 标签中显示的最大有效位数

	d_ptr->pChart->setTitle("");
	d_ptr->pChart->addSeries(d_ptr->pSeries);
	d_ptr->pChart->setAnimationOptions(QChart::SeriesAnimations);
	d_ptr->pChart->setAnimationOptions(QChart::AllAnimations);                   // 设置启用或禁用动画
	d_ptr->pChart->setBackgroundBrush(QBrush(QColor(170,170,255)));              // 设置背景色,主题和背景二选一
	d_ptr->pChart->setLocalizeNumbers(true);                                     // 数字是否本地化
	d_ptr->pChart->createDefaultAxes();                                          // 创建默认轴
	d_ptr->pChart->setTitleBrush(QBrush(QColor(255, 255, 255)));                 // 设置标题Brush
	d_ptr->pChart->setTitleFont(font);                                           // 设置标题字体

	d_ptr->pChart->legend()->setVisible(true);
	d_ptr->pChart->legend()->setAlignment(Qt::AlignTop);                         // 对齐
	d_ptr->pChart->legend()->setLabelColor(QColor(255, 255, 255));               // 设置标签颜色
	d_ptr->pChart->legend()->setVisible(true);                                   // 设置是否可视
	d_ptr->pChart->legend()->setBorderColor(QColor(255, 255, 255, 255));         // 设置边框颜色
	font.setPointSize(FONT_SIZE_TEXT);
	d_ptr->pChart->legend()->setFont(font);

	font.setPointSize(FONT_SIZE_TEXT);
	d_ptr->pCategoryAxis->setLabelsFont(font);

	d_ptr->pChart->setAxisX(d_ptr->pCategoryAxis, d_ptr->pSeries);               
	d_ptr->pChart->axisX(d_ptr->pSeries)->setVisible(true);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setRange(0, 10000);                    
	d_ptr->pChart->axisX(d_ptr->pSeries)->setTitleText("");
	font.setPointSize(10);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setTitleFont(font);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setTitleVisible(true);
	font.setPointSize(FONT_SIZE_TEXT);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLabelsFont(font);

	//X轴网格
	d_ptr->pChart->axisX(d_ptr->pSeries)->setGridLineColor(QColor(255, 255, 255));  //设置网格线颜色
	d_ptr->pChart->axisX(d_ptr->pSeries)->setGridLineVisible(true);

	//X轴标签
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLabelsAngle(0);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLabelsColor(QColor(255, 255, 255));

	font.setPointSize(FONT_SIZE_TEXT);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLabelsFont(font);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLabelsVisible(true);

	d_ptr->pChart->axisX(d_ptr->pSeries)->setLinePenColor(QColor(255, 255, 255));
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLineVisible(true);

	d_ptr->pChart->axisY(d_ptr->pSeries)->setVisible(true);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setRange(0, 10000);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setTitleText("");
	d_ptr->pChart->axisY(d_ptr->pSeries)->setTitleBrush(QBrush(QColor(255, 255, 255)));

	font.setPointSize(10);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setTitleFont(font);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setTitleVisible(true);

	d_ptr->pChart->axisY(d_ptr->pSeries)->setGridLineColor(QColor(255, 255, 255));
	d_ptr->pChart->axisY(d_ptr->pSeries)->setGridLineVisible(true);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setLabelsAngle(0);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setLabelsColor(QColor(255, 255, 255));
	font.setPointSize(FONT_SIZE_TEXT);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setLabelsFont(font);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setLabelsVisible(true);

	d_ptr->pChart->axisY(d_ptr->pSeries)->setLinePenColor(QColor(255, 255, 255));
	d_ptr->pChart->axisY(d_ptr->pSeries)->setLineVisible(true);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setMinorGridLineColor(QColor(255, 255, 255));


	QChartView *chartView = new QChartView(d_ptr->pChart);
	chartView->setRenderHint(QPainter::Antialiasing);

	QHBoxLayout *hb = new QHBoxLayout(this);
	hb->setMargin(0);
	hb->addWidget(chartView);
	this->setContentsMargins(0, 0, 0, 0);

	QObject::connect(d_ptr->pSeries, &QBarSeries::hovered, [](bool status, int index, QBarSet*barset)
	{
		if (status)
		{
			qreal value = barset->at(index);

			QToolTip::showText(QCursor::pos(), QString::number(value, 'f', 2));
		}

	});
}

int SWJ_SF_Bar_Chart::setNameList(QStringList strNameList, QList<QColor> colorList)
{
	QFont font("微软雅黑", FONT_SIZE_TEXT);
	font.setBold(true);
	for (size_t i = 0; i < strNameList.size(); i++)
	{
		QBarSet *pBarSet = new QBarSet(strNameList.at(i));
		*pBarSet << 5420 << 3850 << 2789 << 2543 << 2167 << 1568<<1000;
		pBarSet->setColor(colorList[i]);
		pBarSet->setLabelFont(font);
		d_ptr->pSeries->append(pBarSet);
	}
	
	return 0;
}

int SWJ_SF_Bar_Chart::setTitleName(QString strName)
{
	d_ptr->pChart->setTitle(strName);
	return 0;
}

int SWJ_SF_Bar_Chart::setBackGroudColor(QColor color)
{
	d_ptr->pChart->setBackgroundBrush(QBrush(color));
	return 0;
}

int SWJ_SF_Bar_Chart::setAxisXNameList(QStringList strNameList)
{
	d_ptr->pCategoryAxis->clear();
	d_ptr->pCategoryAxis->append(strNameList);
	return 0;
}

int SWJ_SF_Bar_Chart::setAxisXTitle(QString strTitle, QColor color)
{
	d_ptr->pChart->axisX(d_ptr->pSeries)->setTitleText(strTitle);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setTitleBrush(QBrush(color));

	return 0;
}

int SWJ_SF_Bar_Chart::setAxisYTitle(QString strTitle, QColor color)
{
	d_ptr->pChart->axisY(d_ptr->pSeries)->setTitleText(strTitle);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setTitleBrush(QBrush(color));

	return 0;
}

int SWJ_SF_Bar_Chart::setAxisXValueRange(float fMin, float fMax)
{
	d_ptr->pChart->axisX(d_ptr->pSeries)->setRange(fMin, fMax);
	return 0;
}

int SWJ_SF_Bar_Chart::setAxisYValueRange(float fMin, float fMax)
{
	d_ptr->pChart->axisY(d_ptr->pSeries)->setRange(fMin, fMax);

	return 0;
}

int SWJ_SF_Bar_Chart::updateValue(QString strName, QList<float> fValueList)
{
	if (d_ptr->pSeries == nullptr || d_ptr->pSeries->count() == 0)
		return -1;

	for (size_t i = 0; i < d_ptr->pSeries->count(); i++)
	{
		if (d_ptr->pSeries->barSets()[i]->label().indexOf(strName) != -1)
		{
			int nCount = d_ptr->pSeries->barSets()[i]->count();
			d_ptr->pSeries->barSets()[i]->remove(0,nCount);
			for (size_t j = 0; j < fValueList.size(); j++)
				*d_ptr->pSeries->barSets()[i] << fValueList.at(j);


			break;
		}
	}
	return 0;
}

3、圆饼图程序内容

#include "SWJ_SF_Pie_Chart.h"
#include <QtCharts/QChartView>
#include <QtCharts/QPieSeries>
#include <QtCharts/QPieSlice>
#include <QtCharts/QAbstractBarSeries>
#include <QtCharts/QPercentBarSeries>
#include <QtCharts/QStackedBarSeries>
#include <QtCharts/QBarSeries>
#include <QtCharts/QBarSet>
#include <QtCharts/QLineSeries>
#include <QtCharts/QSplineSeries>
#include <QtCharts/QScatterSeries>
#include <QtCharts/QAreaSeries>
#include <QtCharts/QLegend>
#include <QHBoxLayout>
#include <QTimer>
#include <QDebug>

QT_CHARTS_USE_NAMESPACE
#pragma execution_character_set("utf-8")

#define RGB_BARCKGROUD_COLOR     QColor(56,56,56)
#define RGB_TITLE_COLOR          QColor(255,255,255)
#define FONT_SIZE_PIESLICE       8

struct sPieChart
{
	QTimer *pTimer = nullptr;
	QPieSeries *pSeries = nullptr;
	QChart *pChart = nullptr;
};

SWJ_SF_Pie_Chart::SWJ_SF_Pie_Chart(QWidget *parent)
	: QWidget(parent)
	,d_ptr(new sPieChart)
{
	initial();
}

SWJ_SF_Pie_Chart::~SWJ_SF_Pie_Chart()
{
}

void SWJ_SF_Pie_Chart::initial()
{
	d_ptr->pTimer = new QTimer();
	d_ptr->pSeries = new QPieSeries();
	d_ptr->pChart = new QChart();
	connect(d_ptr->pTimer, SIGNAL(timeout()), this, SLOT(slotOnTimer()));
	d_ptr->pTimer->start(100);

	//绘制饼图
	QObject::connect(d_ptr->pSeries, &QPieSeries::hovered

		, [](QPieSlice *slice, bool state) {

		slice->setExploded(state);
		QString strName = slice->label();
		slice->setLabel(strName);

	});


	//添加饼图切片的标签和值
	d_ptr->pSeries->setHoleSize(0);                                     // 孔大小0.0-1.0
	d_ptr->pSeries->setHorizontalPosition(0.5);                         // 水平位置,默认0.5,0.0-1.0
	d_ptr->pSeries->setLabelsPosition(QPieSlice::LabelOutside);
	d_ptr->pSeries->setLabelsVisible(true);
	d_ptr->pSeries->setPieSize(0.7);                                     // 饼图尺寸,默认0.7
	d_ptr->pSeries->setPieStartAngle(0);                                 // 0度为12点钟方向
	d_ptr->pSeries->setVerticalPosition(0.46);
	d_ptr->pSeries->setVisible(true);

	QFont font(("微软雅黑"), 15);
	font.setBold(true);
	d_ptr->pChart->addSeries(d_ptr->pSeries);
	d_ptr->pChart->setTitle((""));
	d_ptr->pChart->setAnimationOptions(QChart::SeriesAnimations);
	d_ptr->pChart->setTheme(QChart::ChartThemeDark);                      // 设置系统主题
	d_ptr->pChart->setAnimationOptions(QChart::AllAnimations);            // 设置启用或禁用动画
	d_ptr->pChart->setBackgroundBrush(QBrush(RGB_BARCKGROUD_COLOR));      // 设置背景色,主题和背景二选一
	d_ptr->pChart->setLocalizeNumbers(true);                              // 数字是否本地化
	d_ptr->pChart->setTitleBrush(QBrush(RGB_TITLE_COLOR));                // 设置标题Brush
	d_ptr->pChart->setTitleFont(font);                                    // 设置标题字体

	d_ptr->pChart->legend()->setAlignment(Qt::AlignTop);                  // 对齐
	d_ptr->pChart->legend()->setVisible(true);                            // 设置是否可视
	font.setPointSize(8);
	d_ptr->pChart->legend()->setFont(font);               // 设置字体类型


	QChartView *chartView = new QChartView(d_ptr->pChart);
	chartView->setRenderHint(QPainter::Antialiasing);
	QHBoxLayout *hb = new QHBoxLayout(this);
	hb->setMargin(0);
	hb->addWidget(chartView);
	this->setContentsMargins(0, 0, 0, 0);
}

int SWJ_SF_Pie_Chart::setCenterHoleSize(float value)
{
	d_ptr->pSeries->setHoleSize(value);
	return 0;
}

int SWJ_SF_Pie_Chart::setBackGroudColor(QColor color)
{
	d_ptr->pChart->setBackgroundBrush(QBrush(color));   
	return 0;
}

int SWJ_SF_Pie_Chart::setTitleName(QString strName)
{
	if (d_ptr->pChart != nullptr)
	{
		d_ptr->pChart->setTitle(strName);
	}
	else
	{
		return -1;
	}
		

	return 0;
}

int SWJ_SF_Pie_Chart::setNameList(QStringList strNameList,QList<QColor> colorList)
{
	if (strNameList.size() != colorList.size())
		return -1;

	if (d_ptr->pSeries != nullptr)
	{
		d_ptr->pSeries->clear();
		for (int i = 0; i < strNameList.size(); i++)
			d_ptr->pSeries->append(strNameList.at(i), 0);
	}

	for (size_t i = 0; i < d_ptr->pSeries->count(); i++)
	{
		QFont font("微软雅黑", FONT_SIZE_PIESLICE);
		font.setBold(true);

		QPieSlice *slice = d_ptr->pSeries->slices()[i];
		slice->setExploded(false);
		slice->setLabelVisible(true);
		slice->setLabelColor(colorList[i]);
		slice->setColor(colorList[i]);
		slice->setLabelFont(font);
		slice->setLabelVisible(true);
	}

	return 0;
	
}

void SWJ_SF_Pie_Chart::updateValue(QString strName, float fValue)
{
	if (d_ptr->pSeries == nullptr || d_ptr->pSeries->count() == 0)
		return;


	for (size_t i = 0; i < d_ptr->pSeries->count(); i++)
	{
		if (d_ptr->pSeries->slices()[i]->label().indexOf(strName) != -1)
		{
			d_ptr->pSeries->slices()[i]->setLabel(QString("%1-%2").arg(strName).arg(QString::number(fValue, 'f', 2)));
			d_ptr->pSeries->slices()[i]->setValue(fValue);
			break;
		}
	}
}

4、下载链接

https://download.csdn.net/download/u013083044/85267853

打赏
支付宝 微信
上一篇 下一篇