示波器,关于重绘有关问题

示波器,关于重绘问题
大家新年好,刚刚开始学习Qt,最近在做一个qt示波器(2440的板子)但碰到关于重绘的一个问题

【我原来的想法是类只管把数据重绘出来,main函数负责把数据写入public:DrawBuffer数组中,现在时用AD来获取数据】

class Dialog【开始时选base class是Dialog】中增加了
//dialog.h
public:
  void paintEvent(QPaintEvent *);
  int DrawBuffer[320];//要绘图的数据
具体函数
//dialog.cpp
void Dialog::paintEvent(QPaintEvent *)
{
  int i;

  QPainter painter(this);

  QPixmap pixmap;
  pixmap = QPixmap(320,240);
  pixmap.fill(Qt::black);
  painter.drawPixmap(0, 0, pixmap);
  painter.initFrom(this);
  painter.setPen(Qt::green);
  painter.drawLine( pixmap.width()/2,0,pixmap.width()/2,pixmap.height() );//y
  painter.drawLine(0,pixmap.height()/2,pixmap.width(),pixmap.height()/2);//x

  painter.translate(0,120);
  painter.setPen(Qt::blue);
  i=0;
  for(i=0;i<320;i++){
  painter.drawPoint(i, -(DrawBuffer) );
  }
}


主函数
//main.cpp
#include <QtGui/QApplication>
#include "dialog.h"

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/fs.h>
#include <errno.h>
#include <string.h>

int main(int argc, char *argv[])
{
  int fd,i;
  QApplication a(argc, argv);
  Dialog w;
  w.show();
   
  fd = open("/dev/adc", 0);//打开ADC
  if (fd < 0){perror("open ADC device !");exit(1);}//是否打开错误
//!! QMessageBox::information(NULL,"Info","start");//没这句话窗口无法绘制,只有一个鼠标箭头,背景全黑,但串口仍旧发送数据;;;;但时加了这句话后,可以部分重绘刷新,但原来MessageBox的部分无法重绘??

  while(1)//死循(读数据,写入DrawBuffer,重绘)
  {
  char buffer[5];
  int len ;
  for(i=0;i<320;i++)
  {
  len = read(fd, buffer, sizeof buffer);
  if (len > 0)
  {
  int value;
  sscanf(buffer, "%d", &value);
  w.DrawBuffer=value; //写入Drawuffer
  printf("ADC Value: %d\n", value);//串口发出数据
  }
  else
  {
  perror("read ADC device !");
  exit(1);
  }
  }
  w.repaint();//重绘,原来是用update(),但是无法重绘
  }
  a.exec();
}
于是,没有QMessageBox::information弹出窗口,就无法显示窗口,有一个鼠标箭头,背景全黑(w.show();没用的??)-_-有了QMessageBox::information,QMessageBox::information那块地方始终无法重绘??

请教各位高手指点,谢谢!!

------解决方案--------------------
似乎没有update