Qt学习:使用QCustomPlot绘制曲线图
创作时间:
作者:
@小白创作中心
Qt学习:使用QCustomPlot绘制曲线图
引用
CSDN
1.
https://m.blog.csdn.net/m0_46436890/article/details/143204544
1. 下载和安装QCustomPlot
下载:
访问QCustomPlot官方网站下载最新的库。QCustomPlot
安装:
将下载的 文件夹中的 和 文件复制到您的Qt项目目录中。QCustomPlot qcustomplot.h qcustomplot.cpp
2. 创建Qt项目
打开Qt Creator:
选择 -> ,然后选择 。FileNew File or Project…Qt Widgets Application
项目设置:
输入项目名称和位置,然后点击 直到完成向导。Next
3. 配置项目文件
在项目的.pro文件中添加,以便包含必要的源文件:.proQCustomPlot
QT += core gui printsupport
SOURCES += \
main.cpp \
mainwindow.cpp \
qcustomplot.cpp
HEADERS += \
mainwindow.h \
qcustomplot.h
4. 设计用户界面
打开 mainwindow.ui:
使用Qt Designer在主窗口中添加一个控件,并将其 属性设置为 。QWidgetobjectNamecustomPlot
调整大小:
将 的大小调整为合适的值,例如,宽500像素,高400像素。QWidget
5. 修改头文件
打开mainwindow.h,并添加的头文件:QCustomPlot
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "qcustomplot.h" // 引入QCustomPlot头文件
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QCustomPlot *customPlot; // 添加QCustomPlot指针
QTimer *dataTimer; // 定时器
QVector<double> xData, yData; // 数据存储
void updatePlot(); // 更新图表的函数
};
#endif // MAINWINDOW_H
6. 实现主窗口逻辑
打开mainwindow.cpp,并在构造函数中初始化和定时器:QCustomPlot
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
#include <QVector>
#include <cmath> // 使用数学函数
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 初始化QCustomPlot
customPlot = new QCustomPlot(this);
setCentralWidget(customPlot);
// 配置图表
customPlot->addGraph();
customPlot->graph(0)->setPen(QPen(Qt::blue)); // 设置曲线颜色
customPlot->xAxis->setLabel("Time (s)");
customPlot->yAxis->setLabel("Signal Value");
// 启用自动缩放
customPlot->xAxis->setRange(0, 10);
customPlot->yAxis->setRange(-1, 1);
// 初始化定时器
dataTimer = new QTimer(this);
connect(dataTimer, &QTimer::timeout, this, &MainWindow::updatePlot);
dataTimer->start(100); // 每100毫秒更新一次
// 初始化数据
xData.clear();
yData.clear();
}
MainWindow::~MainWindow()
{
delete ui;
}
7. 实现数据更新逻辑
实现 updatePlot 方法:
void MainWindow::updatePlot()
{
// 生成新的数据点
static double time = 0;
static double signalValue = 0;
// 生成新信号值(如正弦波)
signalValue = qSin(time);
time += 0.1;
// 保存数据
xData.append(time);
yData.append(signalValue);
// 更新图表
customPlot->graph(0)->setData(xData, yData);
customPlot->xAxis->setRange(time, 10, Qt::AlignRight); // X轴范围保持在最新10秒内
customPlot->replot(); // 刷新图表
}
8. 编译并运行项目
保存所有更改:
确保所有代码更改都已保存。
编译项目:
点击 -> debug,然后运行程序。BuildBuild Project
查看结果:
应该可以看到一个实时更新的正弦波曲线图。
总结
您现在已经成功使用在Qt中创建了一个实时曲线图。 可以根据需要调整数据生成逻辑、图表样式和更新频率,以实现不同的应用需求。 非常灵活,可以支持多种图表类型和高级特性,您可以进一步查阅其文档来探索更多功能。QCustomPlotQCustomPlot
热门推荐
婴儿鼻子青色是什么原因
社保个人账户余额查询的安全性如何保障?
婚假的规定及其法律依据——从国家法规到地方政策的全面解析
如何打造令行禁止的团队
昆仑山雪菊的功效与作用
超详细的Stable Diffusion扩展插件的推荐与安装
剖析薪酬倒挂问题及解决建议
大海上能看出地球是圆形的吗?详解地球曲率,揭秘航海趣闻
曹操有几个儿子?带你了解
肺结节用什么中药比较好?效果怎么样?
腰部不适警惕!40岁后,腰肌劳损与这4个习惯息息相关
嬴政的统一之路:策略与力量的博弈
荒岛求生怎么获取淡水 流落荒岛生存手册
胡桃夹综合征的超声诊断
病毒感染的症状及治疗措施
如何判断当前主机是物理机还是虚拟机
正月初四记得“抢路头”!迎财神要从初四开始,别再等到初五了!
两万左右最值得买的国产二手车推荐
渤海地理:一个近封闭的内海
胆囊壁增厚的危害及预防方法
连中三元是指哪三元:探究古代科举中的顶级荣誉
JMeter参数化详解:用户定义变量、CSV数据集与函数应用
专业基金投资指南:如何选择适合你的基金
一篇文章说清楚,什么是APC!
如何准确测量尺寸:实用技巧与工具选择指南
如何追踪和清除浏览器中访问过的网站记录?
左手长安,右手洛阳,两大都城的设计都出自他手
撒旦的历史、文化演变及其在现代社会中的多重象征意义探讨
正确认识技术分析:成交量与成交额的实战应用
高蛋白、低碳水化合物饮食:定义、健康益处与潜在风险