2014-06-19 13 views
6

Załóżmy, że mam 2 QTimer obiektów z 10, 20 jak ich odstępach. I przypuśćmy, że chcemy uruchomić slot1() z zegarem 1 timeout sygnał i slot2 z zegarem 2. Tak więc kolejność prowadzenie slot1 i slot2 jest coś takiego:Co się dzieje, jeśli mam kilka nakładających QTimer

10ms-----20ms-----------30ms----40ms----- 
(slot1) (slot1, slot2) (slot1) (slot1, slot2)... 

Chcę wiedzieć po 20 milisekund, które jeden z slot1 & slot2 wykonuje się na początku? i jak mogę zmusić pętlę zdarzeń, aby uruchomić slot2 a następnie slot1 kiedy mają nakładania. (slot2 jest ważniejsza dla mnie do pracy na czas)

Odpowiedz

9

Nie ma gwarancji, że szczeliny w dwóch timerów sprawdzony konkretnych zamówień. To dlatego, że zaczynają je w różnych momentach, a także QTimer w najlepszym razie ma millisecond dokładność przez ustawienie to:

timer.setTimerType(Qt::PreciseTimer); 

Domyślnie jest Qt::CoarseTimer co powoduje mieć dokładność w granicach 5% żądanego przedziału.

O twoim przypadku, jeśli chcesz zadzwonić slot2 i slot1 W celu można do nich dzwonić w szczelinie połączony z zegarem z przedziału 10:

void myClass::onTriggered() 
{ 
    if(count % 2==0) 
     slot2(); 
    slot1(); 

    count++; 
} 
Powiązane problemy