Qt QSplineSeries详解
1、概述
QSplineSeries 是 Qt Charts 模块中的一个类,用于在图表中绘制平滑的曲线。它继承自 QLineSeries,通过对数据点进行插值计算,生成流畅的曲线,而不是简单的直线连接。
QSplineSeries 特别适合用于展示需要平滑过渡的数据趋势,如温度变化曲线、股票价格走势等连续变化的数据。
2、重要方法
QSplineSeries(QObject *parent = nullptr)
:构造函数,创建一个 QSplineSeries 实例void append(const QPointF &point)
:添加一个数据点到曲线系列void append(qreal x, qreal y)
:添加一个数据点(x,y)到曲线系列void append(const QList<QPointF> &points)
:添加多个数据点到曲线系列void clear()
:清除所有数据点QPen pen() const
:获取当前曲线的画笔void setPen(const QPen &pen)
:设置曲线的画笔(颜色、宽度等)QBrush brush() const
:获取填充样式void setBrush(const QBrush &brush)
:设置填充样式(曲线下方面积)bool pointsVisible() const
:判断数据点是否可见void setPointsVisible(bool visible)
:设置数据点是否可见QPointF at(int index) const
:获取指定索引位置的数据点int count() const
:获取数据点的数量void remove(int index)
:移除指定索引位置的数据点void removePoints(int index, int count)
:从指定索引开始移除指定数量的数据点
3、信号
QSplineSeries 继承自 QXYSeries,主要信号包括:
void pointAdded(int index)
:当添加数据点时发射,参数为新添加点的索引void pointRemoved(int index)
:当移除数据点时发射,参数为被移除点的索引void pointsReplaced()
:当数据点被替换时发射void pointValueChanged(int index)
:当指定索引的数据点值发生变化时发射void clicked(const QPointF &point)
:当用户点击曲线上的数据点时发射void hovered(const QPointF &point, bool state)
:当鼠标悬停在数据点上时发射,state 表示是否悬停状态
4、C++ 实例
#include <QApplication>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QAreaSeries>
#include <QLegend>
#include <QPieSlice>QT_CHARTS_USE_NAMESPACEint main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建主窗口QMainWindow window;window.setWindowTitle("QSplineSeries 示例");// 创建图表QChart *chart = new QChart();chart->setTitle("平滑曲线示例");chart->setAnimationOptions(QChart::AllAnimations); // 启用动画// 创建QSplineSeries实例QSplineSeries *series = new QSplineSeries();series->setName("随机数据曲线");// 设置曲线样式QPen pen(Qt::blue);pen.setWidth(2);series->setPen(pen);// 设置数据点可见series->setPointsVisible(true);// 添加数据点series->append(0, 6);series->append(2, 4);series->append(3, 8);series->append(7, 4);series->append(10, 5);series->append(11, 1);series->append(13, 3);series->append(17, 6);series->append(18, 3);series->append(20, 7);// 将曲线添加到图表chart->addSeries(series);// 创建坐标轴QValueAxis *axisX = new QValueAxis();axisX->setTitleText("X轴");axisX->setRange(0, 20);QValueAxis *axisY = new QValueAxis();axisY->setTitleText("Y轴");axisY->setRange(0, 10);// 为图表设置坐标轴chart->setAxisX(axisX, series);chart->setAxisY(axisY, series);// 创建图表视图并设置图表QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing); // 启用抗锯齿,使曲线更平滑// 设置主窗口的中心部件并显示window.setCentralWidget(chartView);window.resize(800, 600);window.show();return a.exec();
}
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!