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

简介: 使用qt实现简易示波器功能
#include "drawer.h"
#include  #include  #include  #include #include
Drawer::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;t<this->width();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);}
}




相关文章
|
4月前
|
开发框架 Java 编译器
【Qt 元对象系统 01 】深入探索Qt的元对象系统:核心地位、功能与构成
【Qt 元对象系统 01 】深入探索Qt的元对象系统:核心地位、功能与构成
137 1
|
11月前
|
Linux API Windows
linux系统中利用QT实现蓝牙功能的方法
linux系统中利用QT实现蓝牙功能的方法
454 0
|
11月前
|
Linux
linux系统中利用QT实现音乐播放器的功能
linux系统中利用QT实现音乐播放器的功能
191 0
|
2月前
|
存储 算法 C++
【Qt应用开发】复刻经典:基于Qt实现Windows风格计算器(加减乘除、删除、归零功能全解析)
在Qt中,"栈"的概念主要体现在两个层面:一是程序设计中的数据结构——栈(Stack),二是用户界面管理中的QStackedWidget控件。下面我将分别简要介绍这两个方面:
109 4
|
11月前
|
Ubuntu Linux API
linux系统中使用QT实现摄像头功能的方法
linux系统中使用QT实现摄像头功能的方法
196 0
|
11月前
|
存储 Linux
linux系统中使用QT实现多媒体的功能方法
linux系统中使用QT实现多媒体的功能方法
133 0
|
4月前
|
网络安全 C++ 索引
C++ Qt开发:TabWidget实现多窗体功能
`QTabWidget` 是Qt中用于实现标签页(tabbed interface)的控件,可以在一个窗口内切换不同的页面。在开发窗体应用时通常会伴随功能的分页,使用TabWidget并配合自定义Dialog组件,即可实现一个复杂的多窗体分页结构,此类布局方式也是多数软件通用的方案。
287 0
C++ Qt开发:TabWidget实现多窗体功能
|
10月前
|
Windows 存储 Cloud Native
C++Qt windows系统托盘增加图标和功能
C++Qt windows系统托盘增加图标和功能