0

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

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 使用率降低到大约四分之一。很奇怪。

4

1 回答 1

1

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

于 2011-10-13T06:35:13.137 回答