0
我想要一個只持續20秒的彈出窗口。我認爲使用QTimer,但可以設置一個動態消息,指示剩餘的秒數嗎?限制在Qt中彈出的持續時間顯示
我想要一個只持續20秒的彈出窗口。我認爲使用QTimer,但可以設置一個動態消息,指示剩餘的秒數嗎?限制在Qt中彈出的持續時間顯示
您可以繼承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但是一個QTimer與stSingleShot(假) ,間隔1秒和計數器就足夠了 – Trompa
@Trompa,是的,這是另一種可能的方法,雖然QDialog已經包含了我正在使用的定時器功能,所以你不需要處理連接QTimer信號和插槽。要麼工作。另外,雖然在這種情況下它不相關,但我發現使用大量QTimer對象會導致問題,所以當不需要時,我嘗試使用內置對象計時器。 – TheDarkKnight
是的,只是給點意見;) – Trompa