QT-键盘事件

在Qt编程中,通过合理利用事件压缩机制,可以有效地减少界面更新时的闪烁现象。例如,在处理键盘事件时,多次调用update()会被合并为一次绘制事件。示例代码可在GitHub上的'Qt_code/face_monkey'项目中查看。
摘要由CSDN通过智能技术生成
键盘事件的获取是通过重定义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.第一次绘制网格和猴子之后,我觉得是猴子在改变位置。但是网格没有必要再画一遍。
  但结果是:我在构造函数里只调用了一次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值