效果图:
#include "mainwindow.h" #include "form.h" #include <QApplication> #include <QtCharts> #include <QPieSeries> #include <QVector> int main(int argc, char *argv[]) { QApplication a(argc, argv); QVector<int> vector_monitNumber; vector_monitNumber.append(5); vector_monitNumber.append(5); vector_monitNumber.append(5); vector_monitNumber.append(5); vector_monitNumber.append(5); vector_monitNumber.append(5); vector_monitNumber.append(10); vector_monitNumber.append(4); vector_monitNumber.append(4); vector_monitNumber.append(2); vector_monitNumber.append(50); vector_monitNumber.append(0); int sum = 0; for(int i=0;i<vector_monitNumber.size();i++) { sum += vector_monitNumber.at(i); } int float_month1 = vector_monitNumber.at(0)*100/sum; QPieSlice *slice1 = new QPieSlice(QString(""), float_month1); //slice1->setLabelVisible(true); slice1->setLabel(QString("1月份%1").arg(vector_monitNumber.at(0))); //slice1->setLabelColor(Qt::yellow); slice1->setLabelVisible(); //slice1->setLabelColor(Qt::white); slice1->setLabelPosition(QPieSlice::LabelOutside); //slice1->setLabelPosition(QPieSlice::LabelInsideTangential); slice1->setBrush(QColor(59,160,255)); QPieSlice *slice2 = new QPieSlice(QString(""), 5); slice2->setLabelVisible(true); slice2->setLabel(QString("2月份%1").arg(vector_monitNumber.at(1))); //slice2->setLabelColor(Qt::red); //slice2->setLabelPosition(QPieSlice::LabelInsideTangential); slice2->setBrush(QColor(55,203,203)); QPieSlice *slice3 = new QPieSlice(QString(""), 5); slice3->setLabelVisible(true); // slice3->setLabelColor(Qt::blue); slice3->setLabel(QString("3月份%1").arg(vector_monitNumber.at(2))); slice3->setLabelPosition(QPieSlice::LabelOutside); slice3->setBrush(QColor(78,203,116)); QPieSlice *slice4 = new QPieSlice(QString(""), 5); slice4->setLabelVisible(true); // slice3->setLabelColor(Qt::blue); slice4->setLabel(QString("4月份%1").arg(vector_monitNumber.at(3))); slice4->setLabelPosition(QPieSlice::LabelOutside); slice4->setBrush(QColor(250,211,55)); QPieSlice *slice5 = new QPieSlice(QString(""), 5); slice5->setLabelVisible(true); // slice3->setLabelColor(Qt::blue); slice5->setLabel(QString("5月份%1").arg(vector_monitNumber.at(4))); slice5->setLabelPosition(QPieSlice::LabelOutside); slice5->setBrush(QColor(249,99,123)); QPieSlice *slice6 = new QPieSlice(QString(""), 5); slice6->setLabelVisible(true); // slice3->setLabelColor(Qt::blue); slice6->setLabel(QString("6月份%1").arg(vector_monitNumber.at(5))); slice6->setLabelPosition(QPieSlice::LabelOutside); slice6->setBrush(QColor(151,95,228)); QPieSlice *slice7 = new QPieSlice(QString(""), 10); slice7->setLabelVisible(true); slice7->setLabel(QString("7月份%1").arg(vector_monitNumber.at(6))); slice7->setLabelPosition(QPieSlice::LabelOutside); slice7->setBrush(QColor(151,95,228)); QPieSlice *slice8 = new QPieSlice(QString(""), 4); slice8->setLabelVisible(true); slice8->setLabel(QString("8月份%1").arg(vector_monitNumber.at(7))); slice8->setLabelPosition(QPieSlice::LabelOutside); slice8->setBrush(QColor(151,95,228)); QPieSlice *slice9 = new QPieSlice(QString(""), 4); slice9->setLabelVisible(true); slice9->setLabel(QString("9月份%1").arg(vector_monitNumber.at(8))); slice9->setLabelPosition(QPieSlice::LabelOutside); slice9->setBrush(QColor(151,95,228)); QPieSlice *slice10 = new QPieSlice(QString(""), 2); slice10->setLabelVisible(true); slice10->setLabel(QString("10月份%1").arg(vector_monitNumber.at(9))); slice10->setLabelPosition(QPieSlice::LabelOutside); slice10->setBrush(QColor(151,95,228)); QPieSlice *slice11 = new QPieSlice(QString(""), 50); slice11->setLabelVisible(true); slice11->setLabel(QString("11月份%1").arg(vector_monitNumber.at(10))); slice11->setLabelPosition(QPieSlice::LabelOutside); slice11->setBrush(QColor(151,95,228)); QPieSlice *slice12 = new QPieSlice(QString(""), 0); slice12->setLabelVisible(true); slice12->setLabel(QString("12月份%1").arg(vector_monitNumber.at(11))); slice12->setLabelPosition(QPieSlice::LabelOutside); slice12->setBrush(QColor(151,95,228)); QPieSeries *series = new QPieSeries(); //饼图中间空心的大小 series->setHoleSize(0.35); // series->append("Protein 4.2%", 4.2); // series->append("Carbs 56.4%", 56.4); // series->append("Other 23.8%", 23.8); series->append(slice1); series->append(slice2); series->append(slice3); series->append(slice4); series->append(slice5); series->append(slice6); series->append(slice7); series->append(slice8); series->append(slice9); series->append(slice10); series->append(slice11); series->append(slice12); QChartView *chartView = new QChartView(); chartView->setRenderHint(QPainter::Antialiasing); //chartView->chart()->setTitle("DonutChart Example"); chartView->chart()->addSeries(series); chartView->chart()->legend()->setAlignment(Qt::AlignRight); //chartView->chart()->setTheme(QChart::ChartThemeBlueCerulean); //chartView->chart()->legend()->setFont(QFont("Arial",7)); //chartView->chart()->legend()->setVisible(false); MainWindow w; w.resize(600, 600); w.setCentralWidget(chartView); w.show(); return a.exec(); }