【问题标题】:QGLWidget updateGL() doesn't update with QTimer?QGLWidget updateGL() 不随 QTimer 更新?
【发布时间】:2010-12-17 08:39:32
【问题描述】:

我有一个“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()' 方法中编写的调试信息,但内容不会更新,除非我将鼠标移到小部件或任何其他交互上。

【问题讨论】:

  • 试试 sm3d->getQGLWidget()->update(); updateGL() 之后
  • 感谢弗兰克,你拯救了我的一天!它有效..你能把这个作为答案,以便我可以将其标记为正确吗?再次感谢。

标签: c++ qt qt4 timer


【解决方案1】:

你必须使用 update() 而不是 updateGL()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    相关资源
    最近更新 更多