2010-07-18 213 views
2

我有一个QGLWidget,它绘制了3D和2D图形(就像在Qt's overpainting example中一样)。 事情是在我添加绘制2D图形(将代码从paintGL()移动到paintEvent()等)之后,小部件停止重绘大部分时间。它在重新载入后,载入后不会重新绘制,等等。所以我把repaint()叫了,这在某些情况下有帮助,但在例如帮助中没有帮助。大小调整。用3D + 2D图形重新绘制QGLWidget

那么我应该使用哪个函数来刷新小部件?它是update()还是updateGL()repaint()?或者也许有一种方法来设置某种模式,以在调整大小/加载/ ...后启用自动重新绘制?

谢谢。

回答

4

您通常应该使用'update',因为这将允许多个排队的绘画事件'折叠'为单个事件。更新方法将调用QGLWidgets的updateGL。如果您想立即重新绘制,应使用“重绘”方法。

如果您连接了一个定时器来定期调用'update',那么定期重新绘制的失败通常表明您正在对CPU施加压力。

发布一些代码可能会使它更容易理解调整大小/初始化的问题。