我有一个“ 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()”方法中编写的调试信息,但是除非将鼠标悬停在小部件上或进行任何其他交互,否则内容不会更新。
最佳答案
您必须使用update()而不是updateGL()
关于c++ - QGLWidget updateGL()不随QTimer更新吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4468846/