键盘事件的获取是通过重定义QWidget的keyPressEvent()和keyReleaseEvent()来实现。
1.移动小猴子的知识点:
QPixmap:是一个绘图设备
pix = new QPixmap(width,height) 是要绘多大的布
pix->fill(Qt::red); 布的填充颜色
QPainter * painter = new QPainter(pix); 创建一支画笔
2.在drawPix函数中,每次都创建了一个画笔,如果在后面不delete painter
会出现如下错误:
QPainter::begin: A paint device can only be painted by one painter at a time.
QPainter::setPen: Painter not active
分析原因: 一个绘图设备只能一次被一个painter调用 你程序里有2个painter
第一次painter的地址如下:
如果不delete掉,内存分配有可能还是那个地址。而一个绘图设备只能一次被一个painter调用。所以要把painter delete.
获得另外的地址,如下图:
3.第一次绘制网格和猴子之后,我觉得是猴子在改变位置。但是网格没有必要再画一遍。
但结果是:我在构造函数里只调用了一次
1.移动小猴子的知识点:
QPixmap:是一个绘图设备
pix = new QPixmap(width,height) 是要绘多大的布
pix->fill(Qt::red); 布的填充颜色
QPainter * painter = new QPainter(pix); 创建一支画笔
2.在drawPix函数中,每次都创建了一个画笔,如果在后面不delete painter
会出现如下错误:
QPainter::begin: A paint device can only be painted by one painter at a time.
QPainter::setPen: Painter not active
分析原因: 一个绘图设备只能一次被一个painter调用 你程序里有2个painter
第一次painter的地址如下:

如果不delete掉,内存分配有可能还是那个地址。而一个绘图设备只能一次被一个painter调用。所以要把painter delete.
获得另外的地址,如下图:

3.第一次绘制网格和猴子之后,我觉得是猴子在改变位置。但是网格没有必要再画一遍。
但结果是:我在构造函数里只调用了一次