复刻:Qt:绘制折线图时图标以及坐标轴设置

(链接:Qt:绘制折线图时图标以及坐标轴设置_OceanStar的博客-CSDN博客)

 

**上链接对应的文章,全网至少有二十个拷贝,但是竟然找不到原创的作者了,我觉这个文章的内容很有价值,所以复刻一次,深入理解一下**

一:原文提到创建GUI应用,选择QMainWindows。

这句话说的太过简略,完整详细说法应该是,在VS2019里面 创建下图所示应用程序。

***

二:原文提到:在.pro中添加:QT += charts

这个不是适用VS2019 开发环境,在VS2019里面增加控件,需要按照下图处理

复刻:Qt:绘制折线图时图标以及坐标轴设置_第1张图片

 复刻:Qt:绘制折线图时图标以及坐标轴设置_第2张图片

三:原文提到《在源文件中添加:#include

这个创建完Qt  Widgets Application 程序后,会产生好几个文件。

有UI文件,有头文件,有源文件,有main.cpp(这个里面的东西一般不会更改),有qrc(系统资源文件)。

复刻:Qt:绘制折线图时图标以及坐标轴设置_第3张图片

所谓头文件,就是上图红色框内的文件。添加完后的效果是

#pragma once

#include 
#include "ui_fuke.h"
#include 

class Fuke : public QMainWindow
{
    Q_OBJECT

public:
    Fuke(QWidget *parent = Q_NULLPTR);

private:
    Ui::FukeClass ui;
};

 ************************************************

四:在构造函数里面添加

   QChartView* chartView = new QChartView(this); //创建 ChartView
    QChart* chart = new QChart(); //创建 Chart
    chart->setTitle("简单函数曲线");

    chartView->setChart(chart); //Chart添加到ChartView
    this->setCentralWidget(chartView);//setCentralWidget的方法,在QMainWindow的对象中放入widget

运行效果如下

复刻:Qt:绘制折线图时图标以及坐标轴设置_第4张图片

 五:

添加对chartView的具体处理代码。(还是在构造函数里面,就是刚才的代码的下面)

// this->
    //创建曲线序列
    QLineSeries* series0 = new QLineSeries();
    QLineSeries* series1 = new QLineSeries();
    series0->setName("Sin曲线");
    series1->setName("Cos曲线");
    chart->addSeries(series0); //序列添加到图表
    chart->addSeries(series1);

    //序列添加数值
    qreal   t = 0, y1, y2, intv = 0.1;
    int cnt = 100;
    for (int i = 0; i < cnt; i++)
    {
        y1 = qSin(t);
        series0->append(t, y1);

        y2 = qSin(t + 20);
        series1->append(t, y2);

        t += intv;
    }

    //创建坐标轴
    QValueAxis* axisX = new QValueAxis; //X 轴
    axisX->setRange(0, 10); //设置坐标轴范围
    axisX->setTitleText("time(secs)"); //标题

    QValueAxis* axisY = new QValueAxis; //Y 轴
    axisY->setRange(-2, 2);
    axisY->setTitleText("value");

    chart->setAxisX(axisX, series0); //为序列设置坐标轴
    chart->setAxisY(axisY, series0); //

    chart->setAxisX(axisX, series1); //为序列设置坐标轴
    chart->setAxisY(axisY, series1); //

运行效果如下,

复刻:Qt:绘制折线图时图标以及坐标轴设置_第5张图片

 六:处理乱码问题。

在源代码里面增加:#pragma execution_character_set("utf-8")

复刻:Qt:绘制折线图时图标以及坐标轴设置_第6张图片

七:再次运行一下

复刻:Qt:绘制折线图时图标以及坐标轴设置_第7张图片 可以正常显示了,下面开始拆解这个程序,深化他, 举一反三。

**

源代码地址:

你可能感兴趣的:(qt)