我有一个'QTimer'对象,想要在给定的时间间隔内重复更新'QGLWidget'。
我的问题是,当我调用'QGLWidget'的updateGL()方法时,内容不会更新。
以下是我如何启动QTimer,
rotationTimer=new QTimer();
rotationTimer->setInterval(500);
QObject::connect(rotationTimer, SIGNAL(timeout()), this, SLOT(slotAutoRotate()),Qt::QueuedConnection);
在slotAutoRotate()中,
void RzState3DCurveSelect::slotAutoRotate()
{
RzStateMachine3DCurves *sm3d =(RzStateMachine3DCurves*) this->getStateMachine();
setYRotation(yRot+5);
sm3d->getQGLWidget()->updateGL(); // <---- call updateGL() of the widget.
//QApplication::processEvents();
}
我甚至可以看到我在“paintGL()”方法中编写的调试信息,但内容不会更新,除非我将鼠标移到窗口小部件或任何其他交互上。
答案 0 :(得分:2)
您必须使用update()而不是updateGL()