qt chartsj基于Q的Graphics View框架,其核心组件是QChartView和QChart.QChartView是一个显示图表的独立部件,基类为QGraphicsView.QChar类管理图表的序列,图例和轴示意图。
绘制一个cos和sin曲线图,效果如下
实现代码
#include "widget.h"
#include "ui_widget.h"
#include <QtCharts>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QChartView *chartView=new QChartView(this);
QChart *chart=new QChart();
chart->setTitle("简单函数曲线");
chartView->setChart(chart);
//序列
QLineSeries *series0=new QLineSeries();
QLineSeries *series1=new QLineSeries();
series0->setName("sin曲线");
series1->setName("cos曲线");
chart->addSeries(series0);
chart->addSeries(series1);
//Qpen
qreal x=0,intv=0.1;
for(int i=0;i<100;i++)
{
series0->append(x,qSin(x));
series1->append(x,qCos(x));
x+=intv;
}
//轴
QValueAxis *axisX=new QValueAxis();
axisX->setRange(0,10);
axisX->setTitleText("时间(秒)");
QValueAxis *axisY=new QValueAxis();
axisY->setRange(-2,2);
axisY->setTitleText("值");
chart->addAxis(axisX,Qt::AlignBottom);
chart->addAxis(axisY,Qt::AlignLeft);
series0->attachAxis(axisX);
series0->attachAxis(axisY);
series1->attachAxis(axisX);
series1->attachAxis(axisY);
chartView->setAlignment(Qt::AlignCenter);
QVBoxLayout *layout=new QVBoxLayout(this);
layout->addWidget(chartView);
this->setLayout(layout);
}
Widget::~Widget()
{
delete ui;
}