QGraphicsDropShadowEffect嵌入式系统上的hpus cpu

时间:2011-09-20 11:57:10

标签: c++ qt cpu-usage dropshadow qtembedded

我创建了一个小部件,它可以作为某种弹出窗口,因此应该有一个投影,以便从背景中进行光学提升。我在弹出窗口小部件的构造函数中初始化阴影效果,如下所示:

dropshadow = new QGraphicsDropShadowEffect(this);
dropshadow->setBlurRadius(32);
dropshadow->setColor(QColor("#121212"));
dropshadow->setOffset(0,0);
setGraphicsEffect(dropshadow);

该应用程序在嵌入式系统上运行,该系统带有Intel Atom CPU,一个自定义Linux发行版,Qt v4.7.3和qws服务器一起运行。当我禁用投影时,当GUI空闲时,我的cpu使用率低于10%。启用投影可将CPU使用率提高到80%以上。对应用程序进行概要分析表明,大部分CPU时间都花在libQtGui.so.4.7.3之内。

有没有人知道为什么cpu使用会像这样爆炸,即使GUI中没有任何内容,甚至鼠标移动都没有?

编辑:更改弹出窗口的大小会更改cpu使用量。将大小减小到四分之一可将CPU使用率降低到大约四分之一。很奇怪。

1 个答案:

答案 0 :(得分:1)

问题只是部分与投影有关。重新绘制一个阴影似乎需要相当多的CPU时间 - 如果不经常重绘,这是可以的。问题很简单。此弹出窗口后面的小部件每秒重绘四到五次,因此弹出窗口也需要重新绘制。这吞噬了大量的CPU时间。解决方案同样简单:如果屏幕上没有任何变化,请避免重绘事件。