2014-06-18 1 views
2

에서 함수 호출 : 이제연기 나는 이런 식으로 할 수있는 3 가지있다 Qt는 4.8 (윈도우)에서 함수가 Qt를

void f() 
{ 
    //1. Do initialization 

    //2. Defer g() for next event (on the same thread) so that it may execute after f() is over 

    //3. Call h() which is time consuming 
} 

을, 나는 제 2 단계의 예를 구현하는 방법을 잘 모르겠습니다 f()에 대한 호출이 완료된 후 동일한 스레드 (다른 스택에 있음)에서 g()이 호출되도록하는 방법. QTimer을 사용해 보았지만 짧은 시간에 10ms라고 말하면 f()이 실행을 완료하지 않은 경우에도 g() 함수가 호출됩니다. 따라서 타이머를 사용하는 것이 신뢰할만한 아이디어가 아닌 것 같습니다. 제발 도와주세요, 어떤 아이디어를 많이 주시면 감사하겠습니다.

+0

이것은 같은 스레드 (다른 스택에있는)에서의 의미는 무엇입니까? –

+0

무엇이'f()'에서'g()'가 아닌 **'f()'후에'g()'**를 호출하지 못하게합니까? – vahancho

+0

그래서 g()는 다음 번엔 메시지 루프 스택에서 호출하기를 원합니다. 즉, g()를 호출하는 대신에 메시지 루프에 이벤트를 게시하고 나중에 현재 이벤트 처리 완료되었습니다. 나는 그것이 물건을 분명히하기를 바란다. – Aarkan

답변

3

을 슬롯 또는 Q_INVOKABLE으로 지정하십시오. 그런 다음 QMetaObject::invokeMethod(this, "g", Qt::QueuedConnection)을 사용하십시오.

관련 문제