源码用的是本论坛上某位大大的 
如下
 paint=new QPainter(this);
 paint->begin(this);
 v4l_open("/dev/video0",&device);
 unsigned char *data = GrabData();
 int x,y;
 int i=0;
 QImage img;
 QRgb *point;
 int r,g,b;
 if(img.create(480,320,32,0,QImage::IgnoreEndian))
 {
  for(x=0;x<320;x++)
  {
    for(y=0;y<480;y++)
    {
     r=(int)data[i+2];
     g=(int)data[i+1];
     b=(int)data;
     point = (QRgb *) img.scanLine(x)+y;
     *point = qRgb(r,g,b);
     i+=3;
    }
  }
 }
 paint->drawImage(10,10,img);
 unsigned char *data = GrabData();是用采集数据的 用MMAP的方式
源码如下
 v4l_grab_init(&device,480,320);
 v4l_mmap_init(&device);
 v4l_grab_frame(&device,frame);
 for(i=0;i<2;i++)
 {
  v4l_grab_sync (&device);
  frame=(frame+1)%2;
  v4l_grab_frame(&device,frame);
  buffer = v4l_get_address(&device);
 }
 return buffer;