QT界面:QChart饼图绘制与显示

环境:Win10+VS2015+Qt5.9.7

首先创建一个Qt GUI Application。工程名:myChart。
在界面中显示图表,可以将其嵌入浮窗等,单个图表显示如下所示。

头文件

myChart.h

#pragma once

#include 
#include 
#include 
#include 

#include "ui_myChart.h"

#pragma execution_character_set("utf-8")
QT_CHARTS_BEGIN_NAMESPACE
class QChartView;
class QChart;
QT_CHARTS_END_NAMESPACE

QT_CHARTS_USE_NAMESPACE

class myChart : public QMainWindow
{
	Q_OBJECT

public:
	myChart(QWidget *parent = Q_NULLPTR);

private:
	Ui::myChartClass ui;

	QList m_charts;
};

源文件

myChart.cpp

#include "myChart.h"

myChart::myChart(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	QGridLayout *baseLayout = new QGridLayout();
	QPieSeries *series = new QPieSeries();
	series->append("合格", 0.8)->setColor(QColor(0, 200, 200));	// 构造两个饼状分区
	series->append("不合格", 0.2)->setColor(QColor(200, 150, 0));//设置每个分区的占比与颜色
	series->setLabelsVisible();									//每个分区label显示
	QChart *chart = new QChart();
	chart->addSeries(series);
	chart->setTitle("实时统计");								
	chart->legend()->hide();									//是否显示图例
	chart->setAnimationOptions(QChart::AllAnimations); // 设置显示时的动画效果

	QChartView *chartView;										//构造图表视图
	chartView = new QChartView(chart);
	chartView->setRenderHint(QPainter::Antialiasing); //抗锯齿处理
	//chartView->chart()->setTheme(QChart::ChartThemeBlueCerulean);
	baseLayout->addWidget(chartView, 1, 0);
	m_charts << chartView;
	setLayout(baseLayout);

	QGridLayout *vlayout = new QGridLayout;
	vlayout->addLayout(baseLayout, 0, 0);
	QWidget *cornerWidget = new QWidget;
	cornerWidget->setLayout(vlayout);
	setCentralWidget(cornerWidget);
}

运行效果:

QT界面:QChart饼图绘制与显示_第1张图片

若直接使用表格主题设置格式,即

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

则,有类似对应的主题效果:
QT界面:QChart饼图绘制与显示_第2张图片

你可能感兴趣的:(QT)