环境:Win10+VS2015+Qt5.9.7
首先创建一个Qt GUI Application。工程名:myChart。
在界面中显示图表,可以将其嵌入浮窗等,单个图表显示如下所示。
头文件
myChart.h
#pragma once
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QGridLayout>
#include <QtCharts/QPieSeries>
#include <QtCharts/QChartView>
#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<QChartView *> 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);
}
运行效果:
若直接使用表格主题设置格式,即
chartView->chart()->setTheme(QChart::ChartThemeBlueCerulean);
则,有类似对应的主题效果: