2010-06-25 44 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