2010-06-25 3 views
2

나는 QGLWidgetQStatusBar을 포함하는 창을 가지고 있습니다. timerEvent 호출 안에서 fps를 계산하지만 모든 프레임에서 상태 표시 줄을 업데이트하는 '올바른'방법을 모르겠습니다.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. 

} 

감사 : fpsGLWidget의 멤버 변수입니다!

답변

2

아마도 012W를 연결하는 사용자 정의 signalslot에 연결되어 있어야합니다. 슬롯 기능을 이런 식으로 뭔가 보일 것

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

: 다음 GLWidget 및 상태 표시 줄을 모두 포함하는 위젯의 연결 확인

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

주를 그 상태 표시 줄에 사용자 정의 클래스 인 경우 그 클래스에 슬롯 함수를 만들고 직접 연결할 수 있습니다. 어느 쪽이든, GLWidget 및 상태 표시 줄에 대한 인스턴스가 포함 된 클래스 내에서 연결을 만들어야합니다.

+0

감사합니다. 자습서와 참조를 찾아 보았지만 connect() 함수를 넣을 위치를 찾을 수 없습니다. GLWidget 및 상태 표시 줄이 포함되어 있기 때문에 그것을 QMainWindow 넣고 시도했지만 컴파일러에서 QMainWindow connect() 함수가 없습니다 말한다. – usm

+0

QMainWindow는 QObject (연결 함수를 정의 함)에서 파생 된 QWidget에서 파생됩니다. QMainWindow에서 Q_Object 매크로를 올바르게 사용하지 않는 것입니까? – TreDubZedd