资源简介
动态心电图绘制,通过qt定时器,实现心电图从左往右进行绘制,到达坐标轴最大值后,再从左往右继续进行绘制。
增加:文章地址:https://blog.csdn.net/DoleH/article/details/86250510
增加:文章地址:https://blog.csdn.net/DoleH/article/details/86250510
代码片段和文件信息
#include “dynamicECG.h“
#include “ui_dynamicECG.h“
DynamicECG::DynamicECG(QWidget *parent)
: QWidget(parent) ui(new Ui::dynamicECG)
{
ui->setupUi(this);
init();
initEcgWaveLineChart();
}
DynamicECG::~DynamicECG()
{
delete ui;
}
void DynamicECG::init() {
originListIndex = 0;
}
void DynamicECG::oneTimeOutAction() {
if (originListIndex >= originListSize)
{
ecgWaveDrawTimer->stop();
}
else {
qint16 tempInt16 = originList.at(originListIndex).toInt();
//qDebug() << QString(“数据为:%1“).arg(tempInt16);
drawEcgWave(originListIndex tempInt16);
originListIndex++;
}
}
void DynamicECG::onShowPushButtonclick()
{
originList.clear();
QString origin = ui->inputTextEdit->toPlainText();
originList = origin.split(““);
originListSize = originList.count();
qDebug() << QString(“数据大小%1“).arg(originListSize);
ecgWaveDrawTimer = new QTimer(this);//定时任务
connect(ecgWaveDrawTimer SIGNAL(timeout()) this SLOT(oneTimeOutAction()));
ecgWaveDrawTimer->start(8);//5ms执行一次
}
//注意axis_x的输入,如果大于65535,
void DynamicECG::drawEcgWave(int axis_x qint16 data) {
int timesCounts = axis_x / 600;//查看数据是否超过了600
if (timesCounts > 0)//如果第一次界面绘制结束,之后存在了600个点
{
axis_x = axis_x - timesCounts * 600;
ecgPointBuffer[axis_x].setY(data);
}
else//如果是第一次界面
{
ecgPointBuffer.append(QPointF(axis_x data));
}
ecgSeries->replace(ecgPointBuffer);
}
//初始化ECG心电图折线图
void DynamicECG::initEcgWaveLineChart() {
//TODO 其实这里可以用默认的坐标轴
axisY_ECG = new QValueAxis();
axisX_ECG = new QValueAxis();
ecgSeries = new QLineSeries();//TODO 考虑改为平滑曲线
ecgWaveLineChart = new QChart();
//添加曲线到chart中
ecgWaveLineChart->addSeries(ecgSeries);
//设置坐标轴显示范围
axisY_ECG->setRange(-350 1200);
axisX_ECG->setRange(0 600);
axisX_ECG->setTickCount(30);
axisY_ECG->setTickCount(10);
//设置坐标轴的颜色,粗细和设置网格显示
axisX_ECG->setGridLinePen(QPen(Qt::red 1 Qt::DashDotDotLine Qt::SquareCap Qt::RoundJoin)); //网格样式
axisY_ECG->setGridLinePen(QPen(Qt::red 1 Qt::DashDotDotLine Qt::SquareCap Qt::RoundJoin));
axisX_ECG->setLinePen(QPen(Qt::red 1 Qt::DashDotDotLine Qt::SquareCap Qt::RoundJoin));//坐标轴样式
axisY_ECG->setLinePen(QPen(Qt::red 1 Qt::DashDotDotLine Qt::SquareCap Qt::RoundJoin));
axisY_ECG->setGridLineVisible(true);//显示线框
axisX_ECG->setGridLineVisible(true);
axisX_ECG->setLabelsVisible(false);//不显示具体数值
axisY_ECG->setLabelsVisible(false);
//把坐标轴添加到chart中,第二个参数是设置坐标轴的位置,
//只有四个选项,下方:Qt::AlignBottom,左边:Qt::AlignLeft,右边:Qt::AlignRight,上方:Qt::AlignTop
ecgWaveLineChart->addAxis(axisX_ECG Qt::AlignBottom);
ecgWaveLineChart->addAxis(axisY_ECG Qt::AlignLeft);
//把曲线关联到坐标轴
ecgSeries->attachAxis(axisX_ECG);
ecgSeries->attachAxis(axisY_ECG);
ecgSeries->setColor(QColor(Qt::black));//设置线的颜色
ecgSeries->setUseOpenGL(true);//openGL加速
setLineChartMargins(ecgWaveLineChart 2);//设置折线图边距
ecgWaveLineChart->legend()->hide();//不显示注释
ui->ecg
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1100 2019-01-15 20:54 dynamic_ecg_wave.sln
目录 0 2019-01-15 21:00 dynamic_ecg_wave\
文件 8623 2019-01-12 21:19 dynamic_ecg_wave\dynamic_ecg_wave.vcxproj
文件 1983 2019-01-12 21:16 dynamic_ecg_wave\dynamic_ecg_wave.vcxproj.filters
文件 637 2019-01-15 20:56 dynamic_ecg_wave\dynamic_ecg_wave.vcxproj.user
文件 3539 2019-01-15 21:00 dynamic_ecg_wave\dynamicECG.cpp
文件 843 2019-01-12 21:16 dynamic_ecg_wave\dynamicECG.h
文件 24148 2019-01-12 21:22 dynamic_ecg_wave\dynamicECG.pro.user
文件 2292 2019-01-12 21:20 dynamic_ecg_wave\dynamicECG.ui
目录 0 2019-01-12 21:16 dynamic_ecg_wave\GeneratedFiles\
目录 0 2019-01-12 21:16 dynamic_ecg_wave\GeneratedFiles\Debug\
文件 3727 2019-01-12 21:10 dynamic_ecg_wave\GeneratedFiles\Debug\moc_data_process.cpp
文件 3704 2019-01-12 21:19 dynamic_ecg_wave\GeneratedFiles\Debug\moc_dynamicECG.cpp
文件 3724 2019-01-12 21:14 dynamic_ecg_wave\GeneratedFiles\Debug\moc_ShowEcgWave.cpp
文件 1427 2019-01-12 21:06 dynamic_ecg_wave\GeneratedFiles\qrc_data_process.cpp
文件 1421 2019-01-12 21:19 dynamic_ecg_wave\GeneratedFiles\qrc_ShowEcgWave.cpp
文件 3536 2019-01-12 21:06 dynamic_ecg_wave\GeneratedFiles\ui_data_process.h
文件 3379 2019-01-12 21:22 dynamic_ecg_wave\GeneratedFiles\ui_dynamicECG.h
文件 3385 2019-01-12 21:15 dynamic_ecg_wave\GeneratedFiles\ui_ShowEcgWave.h
文件 179 2019-01-12 21:17 dynamic_ecg_wave\main.cpp
目录 0 2019-01-11 16:45 dynamic_ecg_wave\Resources\
文件 72 2019-01-11 16:45 dynamic_ecg_wave\ShowEcgWave.qrc
目录 0 2019-01-12 21:04 dynamic_ecg_wave\x64\
目录 0 2019-01-15 20:56 dynamic_ecg_wave\x64\Debug\
文件 429 2019-01-12 21:22 dynamic_ecg_wave\x64\Debug\data_process.log
文件 476255 2019-01-12 21:10 dynamic_ecg_wave\x64\Debug\data_process.obj
目录 0 2019-01-12 21:17 dynamic_ecg_wave\x64\Debug\data_process.tlog\
文件 23092 2019-01-12 21:16 dynamic_ecg_wave\x64\Debug\data_process.tlog\CL.command.1.tlog
文件 971962 2019-01-12 21:16 dynamic_ecg_wave\x64\Debug\data_process.tlog\CL.read.1.tlog
文件 11950 2019-01-12 21:16 dynamic_ecg_wave\x64\Debug\data_process.tlog\CL.write.1.tlog
文件 223 2019-01-12 21:17 dynamic_ecg_wave\x64\Debug\data_process.tlog\data_process.lastbuildstate
............此处省略45个文件信息
相关资源
- 算法作业维诺图,有界面有文档
- QT实现图书馆管理系统
- Qt5版NeHe OpenGL教程6-10
- QT棋类游戏
- 局域网聊天及其源码-QT
-
qt_mpla
yer - [嵌入式Linux项目实战开发]基于QT4.7.
- QPainter绘制雷达图玫瑰图
- Qt做的棋盘游戏
- Qt Creator快速入门
- 智能AI,QT五子棋
- 基于qt的组态软件设计
- 基于ARM的数字式万年历电子时钟QT开发
- qt编程电子书
- QTableView 插入按钮等各种控件
- 用qt写的酒店管理系统
- STM32+FreeRTOS+W5500+MQTT
- 子类化QLabel显示图片并在label上画矩形
- Qt实验报告和源代码
- QT多线程实现图片以缩略图形式显示
- QT5下实现基于TCP发送和接接收文件
- Qt 用TCP和UDP传图片
- qtribbon源码
- Qt实现的连连看游戏含源码
- 基本Qt的一笔画小游戏
- 用Qt写的PID仿真程序
- Qt基于tcp和udp局域网聊天工具
- qt制作的虚拟钟表
- Linux下QT及OpenCV搭建
- qt利用线程实现多任务
评论
共有 条评论