【问题标题】:Update Qt4 statusbar from glwidget从 glwidget 更新 Qt4 状态栏
【发布时间】:2010-06-25 11:40:35
【问题描述】:

我有一个包含QGLWidgetQStatusBar 的窗口。我在 timerEvent 调用中计算 fps,但我不知道在每一帧上更新状态栏的“正确”方式。 fpsGLWidget的成员变量:

void GLWidget::timerEvent(QTimerEvent* event){

    updateGL();

    // Calculate FPS.
    prevTime = currentTime;
    currentTime = runTime.elapsed();

    int timeDiff = currentTime - prevTime;

    fps = 1000.0/timeDiff;

    // Update statusbar with fps here.

}

谢谢!

【问题讨论】:

    标签: c++ opengl qt4


    【解决方案1】:

    您可能想要的是连接到slot 的GLWidget 上的自定义signal。在包含 GLWidget 和状态栏的小部件上建立连接:

    connect(&glWidgetInstance, SIGNAL(updateFPSSignal(int)), this, SLOT(updateFPSSlot(int)));
    

    槽函数看起来像这样:

    void updateFPSSlot(int fps) {
        // Update status bar
    }
    

    请注意,如果状态栏是自定义类,可以在该类中创建槽函数,并直接连接到它。无论哪种方式,都应该在包含 GLWidget 和状态栏实例的类中建立连接。

    【讨论】:

    • 谢谢,我查阅了一些教程和参考资料,但找不到放置 connect() 函数的位置。我试过把它放在 QMainWindow 中,因为它包含 GLWidget 和状态栏,但是编译器说 QMainWindow 没有 connect() 函数。
    • QMainWindow是从QWidget派生的,QWidget又是从QObject(定义了connect函数)派生的。也许您没有在 QMainWindow 中正确使用 Q_Object 宏?
    猜你喜欢
    • 2014-06-28
    • 2014-05-10
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2010-11-19
    • 2015-10-23
    • 2012-07-25
    • 1970-01-01
    相关资源
    最近更新 更多