QT中使用图表之QChart绘制曲线图
步骤和绘制折线图一模一样,只不过使用的系列是曲线系列QSplineSeries
不过我们也可以不用自己来创建轴
而是先把曲线系列创建好并添加到图表中之后
---------------------------------------------------------------------------------------------------------------------------------
调用图表的createDefaultAxes()创建默认的坐标轴
他会根据图表中添加的系列创建不同的轴:(曲线系列属于QXYSeries)
---------------------------------------------------------------------------------------------------------------------------------
然后获取坐标轴,对坐标轴进行各种属性设置
将坐标轴附加到系列中
---------------------------------------------------------------------------------------------------------------------------------
详细步骤如下:
1、创建图表视图
QChartView* view=new QChartView(this);
2、创建图表
QChartView* view=new QChartView(this);
3、将图表设置给图表视图
view->setChart(chart);
4、设置标题和图例的一些属性(可选)
chart -> setTitle("折线图");
chart -> legend() -> show(); //显示和隐藏图例(默认显示)
chart -> legend() -> setAlignment(Qt::AlignRight); //图例居右显示
5、创建曲线系列,给系列添加点,并将系列添加到图表中去
//添加曲线系列
QSplineSeries * spline = new QSplineSeries(this);
spline -> setColor(QColor(255, 0, 0)); //设置系列的颜色
spline -> setName("曲线系列"); //设置图例的名称
//给曲线系列添加点
spline -> append(0, 1200);
spline -> append(20, 1800);
spline -> append(30, 1400);
spline -> append(40, 1900);
spline -> append(60, 1300);
//把系列添加到QChart中
chart -> addSeries(spline);
6、创建默认的坐标轴(必须要在addSeries之后才能调用)
//添加完系列之后创建默认的坐标轴,一定要在addSeries之后才能调用
chart->createDefaultAxes();
7、获取x轴 ,并设置相关属性
//获取x轴,就是水平的那一条轴,并设置一些属性
auto axisX = (QValueAxis * ) chart -> axes(Qt::Horizontal).at(0);
axisX -> setRange(0, 100); //设置范围
axisX -> setTickCount(11);
8、 获取y轴 ,并设置相关属性
//获取y轴,就竖直的那一条轴,并设置一些属性
auto axisY = (QValueAxis * ) chart -> axes(Qt::Vertical).at(0);
axisY -> setRange(1000, 2000); //设置范围
axisY -> setTickCount(11);
9、将轴附加到系列
//把轴附加到系列
spline->attachAxis(axisX);
spline->attachAxis(axisY);
完整代码如下:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QtCharts>
#include<QHBoxLayout>
class Widget: public QWidget {
Q_OBJECT
public:
Widget(QWidget * parent = nullptr): QWidget(parent) {
resize(800, 600);
QHBoxLayout * h_box = new QHBoxLayout(this);
DrawSpLineSeries();
}
~Widget() =
default;
//画曲线
void DrawSpLineSeries() {
//1、创建视图
QChartView * view = new QChartView(this);
this -> layout() -> addWidget(view);
//2.创建图表
QChart * chart = new QChart();
//将图表设置给图表视图
view -> setChart(chart);
//设置标题
chart -> setTitle("折线图");
chart -> legend() -> show(); //显示和隐藏图例(默认显示)
chart -> legend() -> setAlignment(Qt::AlignRight); //图例居右显示
//添加曲线系列
QSplineSeries * spline = new QSplineSeries(this);
spline -> setColor(QColor(255, 0, 0)); //设置系列的颜色
spline -> setName("曲线系列"); //设置图例的名称
//给曲线系列添加点
spline -> append(0, 1200);
spline -> append(20, 1800);
spline -> append(30, 1400);
spline -> append(40, 1900);
spline -> append(60, 1300);
//把系列添加到QChart中
chart -> addSeries(spline);
//添加完系列之后创建默认的坐标轴,一定要在addSeries之后才能调用
chart -> createDefaultAxes();
//获取x轴,就是水平的那一条轴,并设置一些属性
auto axisX = (QValueAxis * ) chart -> axes(Qt::Horizontal).at(0);
axisX -> setRange(0, 100); //设置范围
axisX -> setTickCount(11);
//获取y轴,就竖直的那一条轴,并设置一些属性
auto axisY = (QValueAxis * ) chart -> axes(Qt::Vertical).at(0);
axisY -> setRange(1000, 2000); //设置范围
axisY -> setTickCount(11);
//把轴附加到系列
spline -> attachAxis(axisX);
spline -> attachAxis(axisY);
}
};
#endif // WIDGET_H