如何防止QT事件堆栈溢出?

时间:2011-05-17 20:50:39

标签: c++ linux qt

2 个答案:

答案 0 :(得分:1)

当您从网络收到消息时,将传入数据与当前数据进行比较。如果它发生了变化,那么更新数据并发出'更新gui'事件。如果仍然太快,则只以每秒X的最大速率发出更新事件。

最好不要让你的网络代码知道关于gui的任何信息(即不要叫'重绘')。而是发出“更新”事件,gui可以根据需要处理它。如果更改GUI,则网络代码不会更改。

答案 1 :(得分:1)

我第一次覆盖update()方法时遇到了这类问题。

Gnud是正确的,直接调用原始的update()应该解决你的问题,如果你有事情要做/绘制/更新/绘制一个绘制事件,重新实现paintEvent(QPaintEvent*)

除此之外,为了触发您的绘画事件,您可以将插槽连接到readyRead() QSocket信号。在此广告位中,您可以评估bytesAvailable(),直到达到相当数量的数据。然后你打电话给update()。您还应创建/重置一次性计时器,以防您刚刚收到的数据是最后一次,并且永远不会达到“体面”数量!

相关问题