gpt4 book ai didi

multithreading - 如何使用QTimer每隔10秒将消息打印到QTextBrowser?

转载 作者:行者123 更新时间:2023-12-04 13:17:43 25 4
gpt4 key购买 nike

我已经在这里工作了几个小时,无法弄清楚,也找不到在线有效的帮助。基本上,我要完成的要旨是拥有一个带有按钮和QTextBrowser的Qt GUI。当我按下按钮时,我希望它显示一条消息,然后每隔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()
}
}

我认为它会在循环时脱离timer.isActive(),但它不会仅仅停留在其中。

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

必须有一种简单的方法来做到这一点,但我在Qt的往绩一直是

最佳答案

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

QTimer::singleShot(10000, this, SLOT(eraseMessageSlot()));

另外,这里不需要线程...

关于multithreading - 如何使用QTimer每隔10秒将消息打印到QTextBrowser?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4695044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com