Qt 之 饼图

来源:互联网 时间:2016-11-08

1  饼图 (pie chart)

1.1  Charts 模块

  Qt 库由许多模块组成,其中的 Qt Charts,包含了一系列图表组件,使用前要在 .pro 中添加如下语句:

QT += charts

  cpp 文件中,还需添加头文件和声明命名空间

#include <QtCharts>

using namespace QtCharts;

1.2  代码示例

  这是 Qt 5.7 中实现饼图的代码,#1 ~ #5 声明了头文件

1 #include <QtWidgets/QApplication>

2 #include <QtWidgets/QMainWindow>

3 #include <QtCharts/QChartView>

4 #include <QtCharts/QPieSeries>

5 #include <QtCharts/QPieSlice>

6

7 using namespace QtCharts;

  实际上也可用两个头文件代替:

#include <QtWidgets>

#include <QtCharts>

  #13 ~ #16 新建 QPieSeries 类对象,并将其划分为三份,分别占 10%,20% 和 70%,#17 设置标签属性,使它们都为可见。

 9 int main(int argc, char *argv[])

10 {

11 QApplication a(argc, argv);

12

13 QPieSeries *series = new QPieSeries();

14 series->append("10%", 1);

15 series->append("20%", 2);

16 series->append("70%", 7);

17 series->setLabelsVisible();

  #19 ~ #24 设置每一份的颜色,分别为:红、绿、蓝。

19 QPieSlice *slice0 = series->slices().at(0);

20 QPieSlice *slice1 = series->slices().at(1);

21 QPieSlice *slice2 = series->slices().at(2);

22 slice0->setColor(QColor(255,0,0,255));

23 slice1->setColor(QColor(0,255,0,255));

24 slice2->setColor(QColor(0,0,255,255));

  #26 ~ #29 新建 QChart 类指针,并将 series 添加到 chart 中,然后设置标题和隐藏图例;

  #31 ~ #32 新建 QChartView 类指针,然后将 chart 添加到 chartview 中,设置其渲染属性为 “抗混叠” (QPainter::Antialiasing);

  #34 ~ #37 新建 QMainWindow 类对象,并将 chartview 置于中间,然后重设其大小,最后用 show() 显示出来。

26 QChart *chart = new QChart();

27 chart->addSeries(series);

28 chart->setTitle("PieChart Example");

29 chart->legend()->hide();

30

31 QChartView *chartview = new QChartView(chart);

32 chartview->setRenderHint(QPainter::Antialiasing);

33

34 QMainWindow window;

35 window.setCentralWidget(chartview);

36 window.resize(480, 360);

37 window.show();

38

39 return a.exec();

40 }

 程序界面输出如下:

 

 

2  圆环图 (donut chart)

  #4 用的是 Qt 中的命名空间声明,等效于 using namespace QtCharts

  圆环图中间有空,对应 #11,设置了中间孔的尺寸大小;另外,#21 设置了圆环图的显示主题,#22 设置的是图例的字体;其它代码,饼图的大同小异。

 1 #include <QtWidgets>

2 #include <QtCharts>

3

4 QT_CHARTS_USE_NAMESPACE

5

6 int main(int argc, char *argv[])

7 {

8 QApplication a(argc, argv);

9

10 QPieSeries *series = new QPieSeries();

11 series->setHoleSize(0.35);

12 series->append("Protein 4.2%", 4.2);

13 series->append("Carbs 56.4%", 56.4);

14 series->append("Other 23.8%", 23.8);

15

16 QChartView *chartView = new QChartView();

17 chartView->setRenderHint(QPainter::Antialiasing);

18 chartView->chart()->setTitle("DonutChart Example");

19 chartView->chart()->addSeries(series);

20 chartView->chart()->legend()->setAlignment(Qt::AlignBottom);

21 chartView->chart()->setTheme(QChart::ChartThemeBlueCerulean);

22 chartView->chart()->legend()->setFont(QFont("Arial", 7));

23

24 QMainWindow window;

25 window.setCentralWidget(chartView);

26 window.resize(400, 300);

27 window.show();

28

29 return a.exec();

30 }

   输出界面如下:

   

相关阅读:
Top