Qt5.7 之后集成了Qt Charts模块(参考自:Qt官网) 本人使用的Qt版本是Qt5.9 安装步骤参考(百度经验1 )
需要注意的是安装过程中需要勾选 Qt Charts选项,傻瓜式安装即可。
新建Qwidget工程,在.Pro文件中添加:
QT += charts
如图:
界面设置如下:
sin,cos,clc对应三个按钮,layout用于显示图表。
代码以做了较详细注解,如下:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QtCharts/QChart>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QLineSeries>
#include <QVector>
using namespace QtCharts;
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
void Chart_Init(void);
private slots:
void on_sin_clicked();
void on_cos_clicked();
void on_clc_clicked();
private:
Ui::Widget *ui;
QLineSeries *series;
QChart *chart;
QVector<QPointF> oldData;
QVector<QPointF> data;
quint16 count;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
Chart_Init();
}
Widget::~Widget()
{
delete ui;
}
void Widget::Chart_Init(void){
QValueAxis *axisX = new QValueAxis;//X轴
axisX->setRange(0,10); //设置X轴范围
axisX->setTitleText("横坐标X"); //设置X轴标题
QValueAxis *axisY = new QValueAxis;//定义Y轴
axisY->setRange(-1,1); //设置Y轴范围
axisY->setTitleText("纵坐标Y"); //设置Y轴标题
series = new QLineSeries; //创建折线(以折线的形式显示数据)
chart = new QChart;//创建图表
chart->addAxis(axisX,Qt::AlignBottom);//把横轴添加到图表
chart->addAxis(axisY,Qt::AlignLeft);//把纵轴添加到图表
QChartView *chartview = new QChartView(chart);//创建图表显示
ui->layout->addWidget(chartview);//将图表显示添加到layout控件
}
//显示正弦波
void Widget::on_sin_clicked()
{
series->clear();
for(double i=0.0;i<10.0;i+=0.1){
series->append(i,sin(i));
}
chart->addSeries(series);//把折线添加到图表
}
//显示余弦波
void Widget::on_cos_clicked()
{
series->clear();
for(double i=0.0;i<10.0;i+=0.1){
series->append(i,cos(i));
}
chart->addSeries(series);//把折线添加到图表
}
//清除显示
void Widget::on_clc_clicked()
{
series->clear();
for(double i=0.0;i<10.0;i+=0.1){
series->append(i,0);
}
chart->addSeries(series);//把折线添加到图表
}
工程文件参考:工程文件