2014-06-19 42 views
6
會發生什麼

假設我有2個QTimer對象與10,20作爲他們間隔。再假設我想運行slot1()與定時器1 timeout信號和slot2與定時器2所以上運行的slot1slot2順序是這樣的:如果我有幾個重疊QTimer

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

我想知道20毫秒其中slot1 & slot2一個後首先執行?我怎麼能強迫事件循環運行slot2然後slot1當他們有重疊。(slot2更重要的是對我上一次運行)

回答

9

沒有保證,在兩個定時器插槽被調用特定的命令。這是因爲你在不同的時間開始他們還QTimer充其量可以通過設置這個誤差在毫秒級:

timer.setTimerType(Qt::PreciseTimer); 

默認爲Qt::CoarseTimer導致具有所需的間隔在5%以內的精度。

關於你的情況,如果你想調用爲了slot2slot1你可以叫他們連接到一個計時器的10間隔插槽:

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

    count++; 
}