对QChart不太熟悉,今天开始研究一下,记录下来研究的过程。QChart是专门画图表的类,这里先从最简单的线性图表开始。
QLineSeries类,一种折线图,用于将信息显示为由直线连接的一系列数据点。可通过append()函数直接添加点。直线上的点只需添加线两头的点即可,中间的点可加也可不加。
创建一个MainWindow的QT程序。关键代码:
.pro文件。这里需要添加QT += charts
QT += charts
main.cpp文件,除了添加必要的头文件外,还要添加_CHART_USE_NAMESPACE
#include "mainwindow.h"
#include <QApplication>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QChart>
#include <QChartView>
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLineSeries *series = new QLineSeries();
series->append(0, 6);
series->append(2, 4);
series->append(3, 8);
series->append(5, 6);
series->append(7, 4);
series->append(10, 5);
series->append(11, 1);
series->append(12, 2);
series->append(13, 3);
series->append(17, 6);
series->append(18, 3);
series->append(20, 2);
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("LineChart");
chart->setAnimationOptions(QChart::SeriesAnimations);
chart->legend()->hide();
chart->createDefaultAxes();
chart->axes(Qt::Vertical).at(0)->setRange(0, 8);//设置y轴,x轴这里默认
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
MainWindow w;
w.setCentralWidget(chartView);
w.show();
return a.exec();
}
效果图如下
QChartView自带带缩放功能,但需要以下代码开启:
chartView->setRubberBand(QChartView::RectangleRubberBand);
在QChartView上按住鼠标左键并拖动,会放大。点击鼠标右键,会缩小。
函数参数时枚举类型:
enum RubberBand { NoRubberBand = 0x0, //不缩放 VerticalRubberBand = 0x1, //垂直方向可缩放 HorizontalRubberBand = 0x2, //水平方向可缩放 RectangleRubberBand = 0x3 //垂直和水平方向都可以缩放 };
QSplineSeries是QLineSeries的子类,它画出的线更圆滑,没有棱角。
把上面代码中的QLineSeries更改为QSplineSeries,会得到如下的图。