gpt4 book ai didi

c++ - Qt:有效地在父小部件上绘制小部件的正确方法

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:26 24 4
gpt4 key购买 nike

我有一个父小部件 P,它是一个图形场景小部件,正在绘制一些大尺寸的图片 (QImage),因此调用它的 paint 函数是昂贵的。

现在我想添加一个小部件 C,它以 10Hz 的频率自行更新,我希望它以图形场景部件作为其父级。

C 确实按预期出现在 P 小部件的左上角。但是我发现 C 的 10Hz 更新也会触发 P 的 10Hz 更新并使用大量 CPU。

我该如何防止这种情况发生? C 不需要以任何方式透明。

最佳答案

不幸的是,您无法阻止频率为 10Hz 的子更新触发频率为 10Hz 的父更新。您可以做的是使渲染尽可能高效。

因此您必须使用像素图来绘制 P。每次您在绘制事件中绘制 QImage 时,您都会因使用 QImage 而受到惩罚。你的paintevent应该是

void QWidget::paintEvent(QPaintEvent * event)
{
if(somethingHasChanged())
updatePixmap();
drawSavedPixmap();
}

即使您保存了 QImage,这仍然适用。

关于c++ - Qt:有效地在父小部件上绘制小部件的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com