2013-07-22 27 views

回答

1

您可以繼承QDialog並使用兩個QTimer事件。第一組在20秒後觸發,然後關閉對話框,第二組觸發每秒,並用剩餘時間更新QLabel。所以在顯示QDialog的時候你會做這樣的事情: -

m_DialogClose = startTimer(20 * 1000); // 20 seconds 
m_RemainingTime = startTimer(1 * 1000); // 1 second 

然後你重寫你的對話框中timerEvent功能: -

void MyDialog::timerEvent(QTimerEvent *event) 
{ 
    if(event->timerId() == m_DialogClose) 
    { 
     // close the dialog 
    } 

    else if(event->timerId() == m_RemainingTime) 
    { 
     // update the relevant QLabel text 
    } 
} 
+1

+1但是一個QTimer與stSingleShot(假) ,間隔1秒和計數器就足夠了 – Trompa

+0

@Trompa,是的,這是另一種可能的方法,雖然QDialog已經包含了我正在使用的定時器功能,所以你不需要處理連接QTimer信號和插槽。要麼工作。另外,雖然在這種情況下它不相關,但我發現使用大量QTimer對象會導致問題,所以當不需要時,我嘗試使用內置對象計時器。 – TheDarkKnight

+0

是的,只是給點意見;) – Trompa

相關問題