今天对 雪花飘落 的动画 实现方法做了修改. 改为使用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, 这种方法不可取.
快下班了. 写写注释吧.