使用qt实现简易示波器功能

#include "drawer.h"#include 
#include 
#include 
#include
#includeDrawer::Drawer(QWidget *parent) :QWidget(parent)
{myTimerId=0;xpos=0;pixel=-1;   //负数证明向左移动displayDatacharge=0;displayDatalypos=0;}
void Drawer::openDraw()
{Close=false;myTimerId=startTimer(5);//第一个时钟,返回1}
void Drawer::closeDraw()
{Close=true;killTimer(myTimerId);update();}
void Drawer::drawGrid(QPainter &painter)//绘制网格
{painter.setPen(Qt::green);//定时绘制竖直方向的直线//if(this->xpos==0||xpos%2==0)//    painter.drawLine(this->width()-0.5,-this->height(),this->width()-0.5,0);xpos++;//    //不再绘制竖直和水平的线  而只是绘制y = 0
//     painter.drawLine(0,-150,this->width(),-150);//绘制水平方向的直线for(int u=0;uheight();u++){if(u%50==0){painter.drawLine(0,-u,this->width(),-u);}}//绘制竖直方向的直线for(int t=0;twidth();t++){if(t%50==0){painter.drawLine(t,0,t,-this->height());}}}
void Drawer::drawCurves(QPainter &painter)//绘制实时曲线
{painter.setPen(Qt::black);displayDatafypos=displayDatacharge;displayDatacharge=displayDatalypos;painter.drawLine(this->width()+this->pixel,-displayDatafypos,this->width(),-displayDatalypos);
}
void Drawer::paintEvent(QPaintEvent *)
{QPainter paint(this);paint.setBrush(Qt::white);//设置绘制背景的笔的颜色paint.setViewport(0,0,this->width(),this->height());//设置视口,物理坐标paint.setWindow(QRect(0,-this->height(),this->width(),this->height()));//设置窗口,逻辑坐标paint.drawRect(0,-this->height(),this->width(),this->height());//绘制背景if(Close!=true){drawGrid(paint);drawCurves(paint);}
}
void Drawer::timerEvent(QTimerEvent *event) //当时钟周期定义是启动
{    int  testpos ;if(event->timerId()==myTimerId){scroll(this->pixel,0);testpos = *pPosition;testpos = testpos/8388608/2;testpos = testpos +150;displayDatalypos=testpos; //数据的入口;//      displayDatalypos=rand()%150; //数据的入口;}else{QWidget::timerEvent(event);}
}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部