#include <QtCharts> // 导入QtCharts所有的头文件,也可以单独导入某一个
// 引入qchart命名空间(注意:如果是在ui中提升为QChartView,
// 则QT_CHARTS_USE_NAMESPACE一定要放在#include "ui_widget.h"前面,否则编译会失败)
QT_CHARTS_USE_NAMESPACE
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QLineSeries *series = new QLineSeries();
series->append(0, 6);
series->append(2, 4);
series->append(3, 8);
series->append(7, 4);
series->append(10, 5);
QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
chart->setTitle("折线图");
ui->graphicsView->setChart(chart);
ui->graphicsView->setRenderHint(QPainter::Antialiasing); //抗锯齿处理
}
void MainWindow::on_pushButton_2_clicked()
{
QPieSeries* series = new QPieSeries(); // 创建一个圆环图对象
series->setHoleSize(0.45); // 设置圆环孔径大小0.0 ~1.0
series->append("蛋白质占比 9.2%", 9.2); // 将具有指定值和标签的单个切片附加到series
series->append("其它 23.8%", 223.8);
series->append("碳水化合物 51.4%", 51.4);
QPieSlice* slice = series->append("脂肪占比 15.6%", 15.6); // 设置一个圆环切片,并返回这个切片对象
slice->setExploded(); // 将当前切片分离
slice->setLabelVisible(); // 显示当前切片的标签,默认是不显示的
ui->graphicsView->setRenderHint(QPainter::Antialiasing); // 设置抗锯齿
ui->graphicsView->chart()->setTitle("圆环图标题"); // 设置图表标题
ui->graphicsView->chart()->addSeries(series); // 将创建的圆环对象添加进chart中
ui->graphicsView->chart()->setTheme(QChart::ChartThemeBlueCerulean); // 设置图表的样式
ui->graphicsView->chart()->legend()->setAlignment(Qt::AlignBottom); // 指定图例显示在图表底部
ui->graphicsView->chart()->legend()->setFont(QFont("Arial", 12)); // 设置图例的字体
}
void MainWindow::on_pushButton_3_clicked()
{
//饼图
QPieSeries *series = new QPieSeries();
series->append("正常", 0.8)->setColor(QColor(0,200,200));
series->append("超标", 0.2)->setColor(QColor(200,150,0));
series->setLabelsVisible();
QChart *chart = new QChart();
chart->legend()->hide(); //是否显示图例
chart->addSeries(series);
chart->setAnimationOptions(QChart::AllAnimations);
chart->createDefaultAxes();
chart->setTitle("饼图");
ui->graphicsView->setChart(chart);
ui->graphicsView->setRenderHint(QPainter::Antialiasing); //抗锯齿处理
}
void MainWindow::on_pushButton_4_clicked()
{
//曲线
QLineSeries *seriesWD = new QLineSeries();
seriesWD->setName("WD");
//图
QPolarChart *chartWD = new QPolarChart();
chartWD->legend()->hide();
chartWD->addSeries(seriesWD);
chartWD->setTheme(QChart::ChartThemeBlueCerulean);
chartWD->setTitle("极地图");
//坐标轴
QValueAxis *angleAxis = new QValueAxis(); //角坐标
angleAxis->setTickCount(11);
angleAxis->setLabelFormat("%d");
angleAxis->setShadesVisible(true);
angleAxis->setShadesBrush(QBrush(QColor(249,249,255)));
chartWD->addAxis(angleAxis, QPolarChart::PolarOrientationAngular);
QValueAxis *radiaAxis = new QValueAxis();
radiaAxis->setTickCount(11);
radiaAxis->setLabelFormat("%d");
chartWD->addAxis(radiaAxis, QPolarChart::PolarOrientationRadial);
seriesWD->attachAxis(radiaAxis);
seriesWD->attachAxis(angleAxis);
//赋值
for(int i=0; i<=360; i+=10) {
seriesWD->append(i, i+10);
}
radiaAxis->setRange(0,200);
angleAxis->setRange(0,360);
ui->graphicsView->setChart(chartWD);
ui->graphicsView->setRenderHint(QPainter::Antialiasing); //抗锯齿处理
}