Qt 实现桌面雪花飘落 - 修改2

今天对 雪花飘落 的动画 实现方法做了修改. 改为使用paintEvent重画背景实现.

主要修改的代码:

void SnowWidget::paintEvent(QPaintEvent *e)
{
	//QPainter painter(this);
	//painter.drawPixmap(this->geometry(), pmList->at(ShowIndex)); //Failed
	QPalette palette = this->palette();
	palette.setBrush(QPalette::Window, QBrush(pmList->at(ShowIndex).scaled(this->size()))); //Work
	this->setPalette(palette);
}
注意的是, 使用painter重画失败, 应该是因为snowwidget是主widget的子控件造成. 使用QPalette可以实现重画子控件.

SnowWidget添加了pmList指针及相应代码, 删除了QLabel相关代码.

源码地址: https://github.com/vince025/DesktopSnowFalling.git

分支名: 1.2


这次的修改, 实在吓了一跳,  CPU爆表了! 看来大量的重画(100个widget, 隔150毫秒重画一次)还是很占CPU, 这种方法不可取.


快下班了. 写写注释吧.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值