使用QT绘制折线图

我们先创建一个工程,然后在界面上放置一个Graphics Widget组件,在组件上点击鼠标右键,选择提升为...

提升的类的名称我们写为QChartView

下面我们贴下主要代码

zx.pro

#-------------------------------------------------
#
# Project created by QtCreator 2022-02-13T18:15:06
#
#-------------------------------------------------

QT       += core gui charts

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = zx
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += \
        main.cpp \
        widget.cpp

HEADERS += \
        widget.h

FORMS += \
        widget.ui

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QtCharts>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    //实例化一个QChart对象
    QChart *chart = new QChart;

    chart->setTitle("GDP增长图"); //设置标题

    ui->graphicsView->setChart(chart);  //将QChart对象设置到QChartView图表上

    //设置坐标轴
    QValueAxis* axisX = new QValueAxis;
    axisX->setTitleText("年份"); //设置标题
    axisX->setRange(1960, 2020); //设置范围
    axisX->setTickCount(7);      //设置主刻度个数
    axisX->setLineVisible(true); //设置轴线和刻度线可见性
    axisX->setGridLineVisible(false); //设置网格线可见性

    QValueAxis* axisY = new QValueAxis;
    axisY->setTitleText("GDP(万亿:美元)"); //设置标题
    axisY->setRange(0, 20);       //设置范围
    axisY->setTickCount(21);      //设置主刻度个数
    axisY->setLineVisible(true); //设置轴线和刻度线可见性
    axisY->setGridLineVisible(false); //设置网格线可见性

    //设置序列1
    QLineSeries *series = new QLineSeries;
    series->setName("中国");    //设置序列名
    series->setColor(QColor(255,0,0)); //设置序列颜色

    //添加数据点到序列
    series->append(1960, 0.06);
    series->append(1965, 0.07);
    series->append(1970, 0.09);
    series->append(1975, 0.16);
    series->append(1980, 0.19);
    series->append(1985, 0.30);
    series->append(1990, 0.36);
    series->append(1995, 0.73);
    series->append(2000, 1.21);
    series->append(2005, 2.29);
    series->append(2010, 6.09);
    series->append(2015, 11.06);
    series->append(2020, 14.72);

    //设置序列2
    QLineSeries *series2 = new QLineSeries;
    series2->setName("美国");    //设置序列名称
    series2->setColor(QColor(0,0,255)); //设置序列颜色

    //添加数据点到序列
    series2->append(1960, 0.54);
    series2->append(1965, 0.74);
    series2->append(1970, 1.07);
    series2->append(1975, 1.68);
    series2->append(1980, 2.85);
    series2->append(1985, 4.34);
    series2->append(1990, 5.96);
    series2->append(1995, 7.64);
    series2->append(2000, 10.25);
    series2->append(2005, 13.04);
    series2->append(2010, 15.00);
    series2->append(2015, 18.24);
    series2->append(2020, 20.93);

    //设置序列3
    QLineSeries *series3 = new QLineSeries;
    series3->setName("印度");    //设置序列名称
    series3->setColor(QColor(128,128,128)); //设置序列颜色

    //添加数据点到序列
    series3->append(1960, 0.03);
    series3->append(1965, 0.06);
    series3->append(1970, 0.06);
    series3->append(1975, 0.10);
    series3->append(1980, 0.18);
    series3->append(1985, 0.23);
    series3->append(1990, 0.32);
    series3->append(1995, 0.36);
    series3->append(2000, 0.47);
    series3->append(2005, 0.82);
    series3->append(2010, 1.67);
    series3->append(2015, 2.10);
    series3->append(2020, 2.62);


    //设置序列4
    QLineSeries *series4 = new QLineSeries;
    series4->setName("日本");    //设置序列名称
    series4->setColor(QColor(144,238,144)); //设置序列颜色

    //添加数据点到序列
    series4->append(1960, 0.04);
    series4->append(1965, 0.09);
    series4->append(1970, 0.21);
    series4->append(1975, 0.52);
    series4->append(1980, 1.10);
    series4->append(1985, 1.40);
    series4->append(1990, 3.13);
    series4->append(1995, 5.55);
    series4->append(2000, 4.97);
    series4->append(2005, 4.83);
    series4->append(2010, 5.76);
    series4->append(2015, 4.44);
    series4->append(2020, 5.06);

    //给Qchart添加序列
    chart->addSeries(series);
    chart->addSeries(series2);
    chart->addSeries(series3);
    chart->addSeries(series4);


    //把序列设置到坐标轴
    chart->setAxisX(axisX, series);
    chart->setAxisY(axisY, series);
    chart->setAxisX(axisX, series2);
    chart->setAxisY(axisY, series2);
    chart->setAxisX(axisX, series3);
    chart->setAxisY(axisY, series3);
    chart->setAxisX(axisX, series4);
    chart->setAxisY(axisY, series4);
}

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

效果图

猜你喜欢

转载自blog.csdn.net/new9232/article/details/123016524#comments_26825574