我们正在尝试将 Qt 4.8.5 用于我们公司的一些基于 Linux 的嵌入式设备。我使用没有 X 服务器的 Qt 嵌入式。我需要绘制测量数据并经常更新它们(20-30fps,但只是小部件的一小部分)。该系统基于 ARM,400Mhz,没有 GPU 和 FPU。我继承了 QWidget 并覆盖了paintEvent()。我设置了 WA_OpaquePaintEvent 和 WA_StaticContents。为了测试,我的绘画事件是空的,我调用小部件的 update() 函数形成一个设置为 50 毫秒的计时器。我的问题是空更新占用了 30% 的 CPU。数量随着更新的区域而变化,所以我认为QT可能会在后台重绘一些东西。我已经阅读了很多帖子,但我找不到我的问题的解决方案。如果我注释掉更新调用,CPU 使用率下降到 ~1%(即使我在计时器中生成一个正弦来测试小部件,这应该比空函数调用复杂得多)。我的小部件是矩形的,不透明,我想处理来自绘制事件的完整绘图过程。
是否可以减少这种开销,并由我自己处理整个绘画过程?