QtCharts绘制动态心电图


动态心电图绘制,通过qt定时器,实现心电图从左往右进行绘制,到达坐标轴最大值后,再从左往右继续进行绘制。
增加:文章地址: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_wavedynamic_ecg_wave.vcxproj
     文件        1983  2019-01-12 21:16  dynamic_ecg_wavedynamic_ecg_wave.vcxproj.filters
     文件         637  2019-01-15 20:56  dynamic_ecg_wavedynamic_ecg_wave.vcxproj.user
     文件        3539  2019-01-15 21:00  dynamic_ecg_wavedynamicECG.cpp
     文件         843  2019-01-12 21:16  dynamic_ecg_wavedynamicECG.h
     文件       24148  2019-01-12 21:22  dynamic_ecg_wavedynamicECG.pro.user
     文件        2292  2019-01-12 21:20  dynamic_ecg_wavedynamicECG.ui
     目录           0  2019-01-12 21:16  dynamic_ecg_waveGeneratedFiles
     目录           0  2019-01-12 21:16  dynamic_ecg_waveGeneratedFilesDebug
     文件        3727  2019-01-12 21:10  dynamic_ecg_waveGeneratedFilesDebugmoc_data_process.cpp
     文件        3704  2019-01-12 21:19  dynamic_ecg_waveGeneratedFilesDebugmoc_dynamicECG.cpp
     文件        3724  2019-01-12 21:14  dynamic_ecg_waveGeneratedFilesDebugmoc_ShowEcgWave.cpp
     文件        1427  2019-01-12 21:06  dynamic_ecg_waveGeneratedFilesqrc_data_process.cpp
     文件        1421  2019-01-12 21:19  dynamic_ecg_waveGeneratedFilesqrc_ShowEcgWave.cpp
     文件        3536  2019-01-12 21:06  dynamic_ecg_waveGeneratedFilesui_data_process.h
     文件        3379  2019-01-12 21:22  dynamic_ecg_waveGeneratedFilesui_dynamicECG.h
     文件        3385  2019-01-12 21:15  dynamic_ecg_waveGeneratedFilesui_ShowEcgWave.h
     文件         179  2019-01-12 21:17  dynamic_ecg_wavemain.cpp
     目录           0  2019-01-11 16:45  dynamic_ecg_waveResources
     文件          72  2019-01-11 16:45  dynamic_ecg_waveShowEcgWave.qrc
     目录           0  2019-01-12 21:04  dynamic_ecg_wavex64
     目录           0  2019-01-15 20:56  dynamic_ecg_wavex64Debug
     文件         429  2019-01-12 21:22  dynamic_ecg_wavex64Debugdata_process.log
     文件      476255  2019-01-12 21:10  dynamic_ecg_wavex64Debugdata_process.obj
     目录           0  2019-01-12 21:17  dynamic_ecg_wavex64Debugdata_process.tlog
     文件       23092  2019-01-12 21:16  dynamic_ecg_wavex64Debugdata_process.tlogCL.command.1.tlog
     文件      971962  2019-01-12 21:16  dynamic_ecg_wavex64Debugdata_process.tlogCL.read.1.tlog
     文件       11950  2019-01-12 21:16  dynamic_ecg_wavex64Debugdata_process.tlogCL.write.1.tlog
     文件         223  2019-01-12 21:17  dynamic_ecg_wavex64Debugdata_process.tlogdata_process.lastbuildstate
............此处省略45个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)