多谢楼上,已经找到方法了,代码如下:
int i;
int r, g = 0, b = 0;
QRgb *point;
uchar* bit;
QImage* pImage = new QImage(100,100,32);
setWFlags(getWFlags() | Qt::WRepaintNoErase);
i = 0;
bit = &buffer[0][0];
for(int y = 0; y < 100; y++)
for(int x = 0; x < 100; x++){
r = (int)bit;
point = (QRgb*)pImage -> scanLine(y) + x;
*point = qRgb(r, g, b);
i++;
}
QCanvasPixmap* pixmap = new QCanvasPixmap(*pImage);
QCanvasPixmapArray* pixmapArray = new QCanvasPixmapArray();
pixmapArray -> setImage(0, pixmap);
QCanvasSprite *sprite = new QCanvasSprite(pixmapArray, canvas);
sprite -> setFrame(0);
sprite -> show();