Qt中绘制折线

Qt中绘制折线

基本流程
三要素:场景、图表、序列
创建场景—创建图表—图表添加到场景—创建序列—序列添加到图表
创建坐标轴并设置—坐标轴添加到图表—序列、坐标轴、图表配合
序列设值

1.必要配置
.pro文件

QT += charts

头文件

#include 

QT_CHARTS_USE_NAMESPACE
namespace Ui {
class MainWindow;
}

2.创建图表
有些类的对象是全局定义,如series,axisX,axisY

//创建ChartView——chartview:视图,chart:视图/图表
    QChart *chart = new QChart();
    chart->setTitle("正余弦函数图像");
    ui->chartView->setChart(chart);//将视图放入视图
    ui->chartView->setRenderHint(QPainter::Antialiasing);
//创建折线
    series0->setName("Sin曲线");
    series1->setName("Cos曲线");
    curSeries = series0;
    QPen pen;
    pen.setStyle(Qt::DotLine);
    pen.setWidth(2);
    pen.setColor(Qt::green);
    series0->setPen(pen);
    pen.setStyle(Qt::SolidLine);
    pen.setColor(Qt::red);
    series1->setPen(pen);
    chart->addSeries(series0);//将曲线添加到图表里
    chart->addSeries(series1);
//创建坐标轴
//    QValueAxis *axisX = new QValueAxis;
//    curAxis = axisX;
    axisX->setRange(0,10);//坐标轴范围
    axisX->setLabelFormat("%.1f");//标签格式,小数点后一位
    axisX->setTickCount(11);//主分格个数
    axisX->setMinorTickCount(4);//次分格个数
    axisX->setTitleText("time(secs)");//x轴标题
//    QValueAxis *axisY = new QValueAxis;
    axisY->setRange(-2,2);//坐标轴范围
    axisY->setLabelFormat("%.2f");//小数点后两位
    axisY->setTickCount(4);//主分格个数
    axisY->setTitleText("value");//y轴标题

    chart->setAxisX(axisX,series0);//曲线、图表、坐标轴匹配
    chart->setAxisY(axisY,series0);
    chart->setAxisX(axisX,series1);
    chart->setAxisY(axisY,series1);

3.设置序列值

    series0->clear();
    series1->clear();
    qreal t=0,y1,y2,intv=0.1;
    qreal rd;
    int cnt = 100;
    for(int i=0;i<cnt;i++)
    {
        rd = (qrand()%10)-5;//随机数-5到+5,qrand()%10:产生10以内的随机数
        y1 = qSin(t) - rd/20;
        series0->append(t,y1);//为曲线序列赋值
        y2 =qCos(t) + rd/20;
        series1->append(t,y2);
        t = t+intv;
    }

Qt中绘制折线_第1张图片

你可能感兴趣的:(Qt,程序人生)