Qt:有效地在父窗口小部件上绘制窗口小部件的正确方法

时间:2015-04-19 17:05:25

标签: c++ qt widget

我有一个父窗口小部件P是一个图形场景窗口小部件,它绘制了一个大尺寸的图片(QImage),因此它的绘图功能很难被调用。

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

C确实出现在P小部件的左上角,如预期的那样。 但是我发现C的10Hz更新也触发了P的10Hz更新并且使用了很多CPU。

我怎么能阻止这个? C不需要任何透明。

1 个答案:

答案 0 :(得分:0)

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

因此你必须使用pixmaps来绘制P.每次在paint事件中绘制QImage时,你都会受到使用QImage的惩罚。你的痛苦应该是

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

即使您有一个已保存的QImage,这仍然有效。