#include "qwidgetdraw.h"
#include <QPainter>
#include <QTimer>
#include <QDebug>
int ecgWave[]=
{
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2008, 2016, 2016, 2016, 2024, 2032, 2048,
2064, 2064, 2064, 2072, 2080, 2080, 2080, 2088, 2096, 2104,
2112, 2112, 2112, 2112, 2112, 2112, 2104, 2096, 2088,
2080, 2080, 2080, 2072, 2064, 2064, 2064, 2048, 2032, 2032,
2032, 2016, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 1992, 1984, 1976,
1968, 1960, 1952, 1944, 1936, 1944, 1952, 2016, 2080, 2136,
2192, 2256, 2320, 2376, 2432, 2488, 2544, 2568, 2592, 2536,
2480, 2424, 2368, 2304, 2240, 2184, 2128, 2072, 2016, 1968,
1920, 1928, 1936, 1944, 1952, 1960, 1968, 1984, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2008, 2016, 2024, 2032, 2032,
2032, 2048, 2064, 2064, 2064, 2072, 2080, 2088, 2096, 2104,
2112, 2112, 2112, 2120, 2128, 2136, 2144, 2152, 2160, 2160,
2160, 2160, 2160, 2168, 2176, 2176, 2176, 2184, 2192,
2192, 2192, 2192, 2200, 2208, 2208, 2208, 2208, 2208, 2208,
2208, 2200, 2192, 2192, 2192, 2184, 2176, 2176, 2176, 2168,
2160, 2160, 2160, 2144, 2128, 2128, 2128, 2128, 2128, 2112,
2096, 2088, 2080, 2072, 2064, 2064, 2064, 2048, 2032, 2024,
2016, 2016, 2016, 2008, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000
};
QWidgetDraw::QWidgetDraw(QWidget *parent) : QWidget(parent)
{
// this->resize(1600,500);
this->map = QPixmap(this->width(), this->height());
this->map.fill(Qt::black);
this->timer = new QTimer(parent);
this->timer->start(10); //单位是毫秒
// connect(timer, &QTimer::timeout, this, &QWidgetDraw::refresh);
connect(timer, &QTimer::timeout, this, &QWidgetDraw::sendData);
connect(this, &QWidgetDraw::rxDataSignal, this, &QWidgetDraw::refreshFromData);
connect(this, &QWidgetDraw::rxDataSignal, this, &QWidgetDraw::testRx);
}
// event
void QWidgetDraw::resizeEvent(QResizeEvent *event)
{
qDebug()<<"this"<<this->width();
qDebug()<<"this"<<this->height();
// 根据当前尺寸新建画布
QPixmap cleanMap = QPixmap(this->width(), this->height());
cleanMap.fill(Qt::black);
// 新建后的画布替换原有画布
this->map = cleanMap;
this->x = 0;
qDebug()<<this->map.width();
qDebug()<<this->map.height();
}
void QWidgetDraw::testRx(int data)
{
// qDebug()<<"rx:"<<data;
}
void QWidgetDraw::sendData()
{
int data = 0;
int height = this->height();
data = height - ecgWave[index]*height/4096;
this->index += 3;
if(this->index >= sizeof(ecgWave)/sizeof(int))
this->index = 0;
emit rxDataSignal(data);
}
void QWidgetDraw::refreshFromData(int data)
{
// 更新图片缓存
QPainter *painter = new QPainter();
painter->begin(&this->map);
//配置画笔
QPen *pen = new QPen();
pen->setWidth(2);
pen->setColor(Qt::green);
painter->setPen(*pen);
// 画图到map(缓存)
this->drawWave(painter, data);
painter->end();
// 执行update,触发paintevent事件
this->update();
}
void QWidgetDraw::refresh()
{
// 更新图片缓存
QPainter *painter = new QPainter();
painter->begin(&this->map);
// 画图到map(缓存)
this->draw(painter);
painter->end();
// 执行update,触发paintevent事件
this->update();
}
// 事件机制
void QWidgetDraw::paintEvent(QPaintEvent *event)
{
QPainter *painter = new QPainter();
painter->begin(this);
// 画图到界面
painter->drawPixmap(0, 0, this->map);
painter->end();
}
void QWidgetDraw::drawDemo(QPainter *painter)
{
QPen *pen = new QPen();
//配置画笔
pen->setColor(Qt::green);
//存储配置
painter->save();
painter->setPen(*pen);
//画图
painter->drawRect(0, 0, 100, 100);
// todo 嵌套深度验证
// 重新加载原来配置
painter->restore();
}
void QWidgetDraw::draw(QPainter *painter)
{
//配置画笔
QPen *pen = new QPen();
pen->setWidth(2);
pen->setColor(Qt::green);
painter->setPen(*pen);
// drawTriangleNew(painter);
drawWaveFromArray(painter);
}
void QWidgetDraw::drawTriangleNew(QPainter *painter)
{
int width = this->width();
int height = this->height();
// 创建画笔
QPen *pen = new QPen();
// 参数配置
pen->setWidth(4);
pen->setColor(Qt::black);
// 保持配置
painter->save();
// 新的配置
painter->setPen(*pen);
// 擦除
painter->drawLine(x, 0, x, height);
// 还原配置
painter->restore();
painter->drawPoint(x, height-y);
x += 1;
if(0 == dir)
{
y += 1;
if(y > height/2)
dir = 1;
}else
{
y -= 1;
if(0 == y)
dir = 0;
}
if(x >= width)
x = 0;
}
void QWidgetDraw::drawTriangle(QPainter *painter)
{
int width = this->width();
int height = this->height();
int cnt;
int x,y;
int dir = 0;
x = 0;
y = 0;
for(cnt = 0; cnt < width; cnt ++)
{
painter->drawPoint(x, height-y);
x += 1;
if(0 == dir)
{
y += 1;
if(y > height/2)
dir = 1;
}else
{
y -= 1;
if(0 == y)
dir = 0;
}
}
}
void QWidgetDraw::drawWaveFromArray(QPainter *painter)
{
int data = 0;
int height = this->height();
data = height - ecgWave[index]*height/4096;
this->drawWave(painter, data);
this->index += 3;
if(this->index >= sizeof(ecgWave)/sizeof(int))
this->index = 0;
}
void QWidgetDraw::drawWave(QPainter *painter, int data)
{
int width = this->width();
int height = this->hei
没有合适的资源?快使用搜索试试~ 我知道了~
基于QT+C++的智能云监护仪项目,能够实时显示使用者心电、血氧、血压波形及其它各种参数+源码(毕业设计&课程设计&项目开发)
共9个文件
cpp:4个
h:3个
pro:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 198 浏览量
2024-05-21
20:44:17
上传
评论 1
收藏 6KB ZIP 举报
温馨提示
基于QT+C++的智能云监护仪项目,能够实时显示使用者心电、血氧、血压波形及其它各种参数+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于QT+C++的智能云监护仪项目,能够实时显示使用者心电、血氧、血压波形及其它各种参数+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于QT+C++的智能云监护仪项目,能够实时显示使用者心电、血氧、血压波形及其它各种参数+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于QT+C++的智能云监护仪项目,能够实时显示使用者心电、血氧、血压波形及其它各种参数+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~
资源推荐
资源详情
资源评论
收起资源包目录
基于QT的智能云监护仪项目.zip (9个子文件)
QT-based-smart-cloud-monitor-master
qwidgetdraw.h 911B
qwidgetdemo.cpp 474B
main.cpp 871B
layoutDemo.h 151B
qwidgetdemo.h 231B
layoutDemo.cpp 4KB
.gitignore 814B
qwidgetdraw.cpp 8KB
D4_Layout1.pro 247B
共 9 条
- 1
资源评论
梦回阑珊
- 粉丝: 3540
- 资源: 1153
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功