2010-06-25 82 views
2

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

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. 

} 

谢谢!

回答

2

您可能需要的是您连接到slot的GLWidget上的自定义signal。就同​​时包含GLWidget和状态栏插件的连接:

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

插槽功能会是这个样子:

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

注意,如果状态栏是一个自定义类,你可以在该类中创建插槽功能,并直接连接到它。无论哪种方式,都应该在包含GLWidget和状态栏的实例的类中进行连接。

+0

谢谢,我查了一些教程和参考,但我找不到在哪里把connect()函数。我试着把它放在QMainWindow中,因为它包含GLWidget和状态栏,但编译器说QMainWindow没有connect()函数。 – usm 2010-06-29 05:21:50

+0

QMainWindow派生自QWidget,派生自QObject(它定义了连接函数)。也许你没有在QMainWindow中正确使用Q_Object宏? – TreDubZedd 2010-06-29 14:28:07