我在這方面的工作了幾個小時,不能弄明白也可以找到任何幫助網上的作品。基本上我想要完成的是要有一個Qt GUI和一個按鈕和一個QTextBrowser。當我按下按鈕時,我希望它顯示一條消息,然後每隔10秒繼續打印一次該消息。Qt:如何使用QTimer每隔10秒將消息打印到QTextBrowser?
我想我會使用QTimer,因爲它是有道理的有一個定時器diplay消息每10秒。當我最初實現這個到我buttonClicked()SLOT它導致程序凍結。我在網上尋找解決方案,並找到QApplication :: processEvents()。
所以在我的功能基本上我有這樣的事情:
while(1)
{
QTimer *timer;
connect(...) //omitted parameters for this example
timer.start(10000);
ui->diplay->append("Message");
while(timer.isActive())
{
QApplication::processEvents()
}
}
我想它會跳出timer.isActive()的while循環,但它不會簡單地停留在那裏。
所以我想這是一個線程問題。所以我想出瞭如何使用QThreads,但我仍然無法使它工作。基本上,當我創建一個帶有定時器的線程並且線程告訴定時器啓動時,程序關閉,控制檯顯示「程序意外完成」。
必須有一個簡單的方法來做到這一點,但我使用Qt的紀錄一直是個
更新:我現在用的timer-> singleShot(定時器,SIGNAL(超時()),這一點,SLOT(更新())) ;但我需要程序來打印消息並等待10秒鐘,然後繼續處理。我把它放在一個while循環中,所以它每10秒就會不斷地執行singleShots而不是每一次。有什麼建議麼?謝謝! – 2011-01-14 21:55:18
幾乎所有人都錯過了這個事情發生在一段時間(1)循環?難怪程序是凍結的。 – 2011-01-20 17:15:57