#include "drawer.h"
#include <QPalette>
#include <QPainter>
#include <QtGui>
#include<QColor>
#include<iostream>
Drawer::Drawer(QWidget *parent) :
QWidget(parent)
{
myTimerId=0;
xpos=0;
pixel=-10; //负数证明向左移动
displayDatacharge=0;
displayDatalypos=0;
}
void Drawer::openDraw()
{
Close=true;
myTimerId=startTimer(100);//第一个时钟,返回1
}
void Drawer::closeDraw()
{
Close=true;
killTimer(myTimerId);
update();
}
void Drawer::drawGrid(QPainter &painter)//绘制网格
{
painter.setPen(Qt::darkGreen);
if(this->xpos==0||xpos%2==0)
painter.drawLine(this->width()-0.5,-this->height(),this->width()-0.5,0);
xpos++; //定时绘制竖直方向的直线
for(int u=0;u<this->height();u++)
{
if(u%20==0)
{
painter.drawLine(0,-u,this->width(),-u);
}
}//绘制水平方向的直线
}
void Drawer::drawCurves(QPainter &painter)//绘制实时曲线
{
painter.setPen(Qt::green);
displayDatafypos=displayDatacharge;
displayDatacharge=displayDatalypos;
painter.drawLine(this->width()+this->pixel,-displayDatafypos,this->width(),-displayDatalypos);
}
void Drawer::paintEvent(QPaintEvent *)
{
QPainter paint(this);
paint.setBrush(Qt::black);//设置绘制背景的笔的颜色
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) //当时钟周期定义是启动
{
if(event->timerId()==myTimerId){
scroll(this->pixel,0);
displayDatalypos=rand()%150; //数据的入口;
}
else{
QWidget::timerEvent(event);}
}
评论30
最新资源