Roson的Qt之旅#59 QLineSeries和QSplineSeries(折线图与曲线图)

164 篇文章 31 订阅

完整代码下载地址:

https://download.csdn.net/download/jolin678/36232192icon-default.png?t=L9C2https://download.csdn.net/download/jolin678/36232192

1.折线图(QLineSeries)

首先要创建折线图,需要一个QLineSeries实例。

QLineSeries *series = new QLineSeries();

然后我们向series中添加数据。可以使用append()成员函数或使用流操作符。


series->append(0, 6);
series->append(2, 4);
series->append(3, 8);
series->append(7, 4);
series->append(10, 5);
*series << QPointF(11, 1) << QPointF(13, 3) << QPointF(17, 6) << QPointF(18, 3) << QPointF(20, 2);

为了在图表中显示数据,我们需要一个QChart实例。我们将系列添加到其中,创建默认轴,并设置图表的标题。

QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
chart->setTitle("Simple line chart example");

然后我们用QChart作为参数创建一个QChartView对象。这样我们就不需要自己创建QGraphicsView场景。我们还设置了反锯齿,使渲染线看起来更好。

QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);

然后显示图表

QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();

2.曲线图(QSplineSeries)

要创建曲线图,我们需要将数据放入QSplineSeries中。QSplineSeries自动计算正确绘制曲线所需的控制点。

QSplineSeries *series = new QSplineSeries();
series->setName("spline");

接下来,向series中添加一些数据点。

series->append(0, 6);
series->append(2, 4);
series->append(3, 8);
series->append(7, 4);
series->append(10, 5);
*series << QPointF(11, 1) << QPointF(13, 3) << QPointF(17, 6) << QPointF(18, 3) << QPointF(20, 2);

上面的代码已经填充了数据系列。为了在图表中显示它,我们创建一个QChart对象并将数据系列添加到里面。我们还在y轴上设置标题和值范围,这样图表的可见性就更好了。

QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->setTitle("Simple spline chart example");
chart->createDefaultAxes();
chart->axisY()->setRange(0, 10);

然后我们用QChart作为参数创建一个QChartView对象。这样我们就不需要自己创建QGraphicsView场景。我们还设置了反锯齿,使渲染线看起来更好。

QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);

最后,我们将QChartView设置为窗口的中心小部件,图表就能显示了

QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen Roson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值