c++ - QGraphicsDropShadowEffect 在嵌入式系统上占用 cpu

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

最佳答案

问题只是部分与投影有关。似乎重绘投影需要相当多的 CPU 时间——如果重绘不是太频繁的话,这是可以接受的。问题真的很简单。弹出窗口后面的小部件每秒重绘四到五次,因此弹出窗口也需要重绘。这吞噬了大量的 CPU 时间。解决方案同样简单:如果屏幕上没有真正发生变化,则避免重绘事件。

关于c++ - QGraphicsDropShadowEffect 在嵌入式系统上占用 cpu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7484730/

相关文章:

c++ - 使用 _set_se_translator 和编译标志

qt - 拥有诺基亚 Qt 技术支持的经验吗?

c++ - 使用超线程正确测量 CPU 使用率?

Android Studio CMake 为所有构建变体构建一次

c++ - 加载时动态链接库调度

c++ - 在 C++ 代码中查找 QDomDocument 时出错

c++ - 如何在 QTreeWidget 中选择一个项目?

android - 为 Android 编码时,有没有办法分别获取设备每个内核的 CPU 使用率?

c# - 使用 C# 和 WMI 计算的 CPU 使用率错误

c++ - freeglut 无法使用 valgrind 打开显示