当前位置: 首页 > news >正文

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();
}

点击扫码加入群聊

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 

http://www.dtcms.com/a/389908.html

相关文章:

  • 扩散模型简介
  • [答疑]SysML模型的BDD中加了新的端口,怎样同步到IBD
  • MySQL 专题(二):索引原理与优化
  • 【脑电分析系列】第17篇:EEG特征提取与降维进阶 — 主成分分析、判别分析与黎曼几何
  • NVIDIA DOCA 环境产品使用与体验报告
  • C# Windows Service 中添加 log4net 的详细教程
  • 用 pymupdf4llm 打造 PDF → Markdown 的高效 LLM 数据管道(附实战对比)
  • 机械设备钢材建材网站 网站模版
  • Mysql8 SQLSTATE[42000] sql_mode=only_full_group_by错误解决办法
  • 【第五章:计算机视觉-项目实战之图像分类实战】2.图像分类实战-(3)批量归一化(Batch Normalization)和权重初始化的重要性
  • SQL Server 多用户读写随机超时?从问题分析到根治方案
  • 2.css的继承性,层叠性,优先级
  • OpenStack 学习笔记(四):编排管理与存储管理实践(上)
  • list_for_each_entry 详解
  • Perplexity AI Agent原生浏览器Comet
  • 颈椎按摩器方案开发,智能按摩仪方案设计
  • Sui 学习日志 1
  • 六、Java—IO流
  • 数据库 事务隔离级别 深入理解数据库事务隔离级别:脏读、不可重复读、幻读与串行化
  • 从“纸面”到“人本”:劳务合同管理的数字化蜕变
  • ARM架构——学习时钟7.2
  • VS Code 调试配置详解:占位符与语言差异
  • 锁 相关知识总结
  • caffeine 发生缓存内容被修改以及解决方案-深度克隆
  • rust编写web服务06-JWT身份认证
  • 《怪猎:荒野》制作人:PC平台对日本游戏非常重要
  • 大模型训练框架(二)FSDP
  • MySQL——系统数据库、常用工具
  • 蓝桥杯题目讲解_Python(转载)
  • 性能测试监控实践(九):性能测试时,监控docker微服务资源利用率和分析