Qt中绘制折线
基本流程
三要素:场景、图表、序列
创建场景—创建图表—图表添加到场景—创建序列—序列添加到图表
创建坐标轴并设置—坐标轴添加到图表—序列、坐标轴、图表配合
序列设值
1.必要配置
.pro文件
QT += charts
头文件
#include <QtCharts>
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;
}