我有一个“ 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/

10-08 21:32