Qt开发——QChart初探之疫情确诊新增趋势图

目录

原图:

效果图(后面的数据懒得画了……)

换个风格:

注意添加:

mainwindow.cpp

mainwindow.h


原图:

效果图(后面的数据懒得画了……)

换个风格:

注意添加:

QT       += charts
QT_CHARTS_USE_NAMESPACE

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowIcon(QIcon("icon.png"));
    setWindowTitle(QStringLiteral("全国疫情确诊新增趋势图"));
    createCharts();
}

MainWindow::~MainWindow()
{
    delete ui;
}

//创建图标
void MainWindow::createCharts(){
    QChartView *chartView = new QChartView(this);
    QChart *chart = new QChart();
    chart->setTitle(QStringLiteral("全国疫情确诊新增趋势图"));
    chartView->setChart(chart);//将chart添加到chartview中
    this->setCentralWidget(chartView);
    //创建折线序列
    QLineSeries *series0 = new QLineSeries();
    QLineSeries *series1 = new QLineSeries();
    //设置折线名称
    series0->setName(QStringLiteral("湖北确诊新增"));
    series1->setName(QStringLiteral("湖北外新增确诊"));
    //将序列添加到列表
    chart->addSeries(series0);
    chart->addSeries(series1);
    //在序列中添加数值
//    qreal t = 0,y1,y2,intv = 0.1;
//    for(int i=0;i<100;i++){
//        y1 = qSin(t);
//        series0->append(t,y1);
//        y2 = qCos(t);
//        series1->append(t,y2);
//        t+=intv;
//    }
    qreal t,y0,y1;
    y0 = 300;
    t = 1.23;
    series0->append(t,y0);
    y1 = 320;
    t = 1.23;
    series1->append(t,y1);
    y0 = 350;
    t = 1.24;
    series0->append(t,y0);
    y1 = 370;
    t = 1.24;
    series1->append(t,y1);
    y0 = 430;
    t = 1.25;
    series0->append(t,y0);
    y1 = 440;
    t = 1.25;
    series1->append(t,y1);
    y0 = 490;
    t = 1.26;
    series0->append(t,y0);
    y1 = 480;
    t = 1.26;
    series1->append(t,y1);
    y0 = 1200;
    t = 1.27;
    series0->append(t,y0);
    y1 = 500;
    t = 1.27;
    series1->append(t,y1);
    y0 = 800;
    t = 1.28;
    series0->append(t,y0);
    y1 = 600;
    t = 1.28;
    series1->append(t,y1);

    //设置主题风格
//    QChart::ChartTheme theme = QChart::ChartThemeBlueCerulean;
    QChart::ChartTheme theme = QChart::ChartThemeDark;
    chart->setTheme(theme);

    //创建坐标轴
    QValueAxis *axisX = new QValueAxis;
    axisX->setRange(1.22,2.04);//设置坐标轴范围
    axisX->setTitleText(QStringLiteral("时间"));

    QValueAxis *axisY = new QValueAxis;
    axisY->setRange(0,3500);//设置坐标轴范围
    axisX->setTitleText(QStringLiteral("人数"));
    //为序列设置坐标轴
    chart->setAxisX(axisX,series0);
    chart->setAxisY(axisY,series0);
    chart->setAxisX(axisX,series1);
    chart->setAxisY(axisY,series1);
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QChart>
#include <QChartView>
#include <QLine>
#include <QLineSeries>
#include <QtMath>
#include <QValueAxis>
QT_CHARTS_USE_NAMESPACE

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    void createCharts();
};

#endif // MAINWINDOW_H
发布了287 篇原创文章 · 获赞 297 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_41895747/article/details/104219147