如何使用QTimer每10秒向QTextBrowser打印一条消息?

Aar*_*lar 6 qt multithreading qt4 timer qthread

我已经在这工作了几个小时,无法弄明白,也无法找到任何有效的在线帮助.基本上我要完成的要点就是拥有一个带按钮的Qt GUI和一个QTextBrowser.当我按下按钮时,我希望它显示一条消息,然后每隔10秒继续打印此消息.

我想我会使用QTimer,因为有一个计时器每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() 
   }
}
Run Code Online (Sandbox Code Playgroud)

我认为它会在while循环中突破timer.isActive(),但它不会简单地停留在那里.

所以我认为这是一个线程问题.所以我想出了如何使用QThreads,但我仍然无法让它工作.基本上当我创建一个带有计时器的线程并且线程告诉计时器启动时,程序关闭并且控制台显示"程序意外完成".

必须有一个简单的方法来做到这一点,但我与Qt的记录一直是那个

tib*_*bur 7

如果要显示10秒的消息,更好的方法是在应用程序中创建一个将删除消息的插槽.然后,在按钮单击的插槽中,添加消息并初始化一个计时器,该计时器将在10秒内触发删除消息槽:

QTimer::singleShot(10000, this, SLOT(eraseMessageSlot()));
Run Code Online (Sandbox Code Playgroud)

此外,那里不需要一个线程......