答案 0 :(得分:1)
当您从网络收到消息时,将传入数据与当前数据进行比较。如果它发生了变化,那么更新数据并发出'更新gui'事件。如果仍然太快,则只以每秒X的最大速率发出更新事件。
最好不要让你的网络代码知道关于gui的任何信息(即不要叫'重绘')。而是发出“更新”事件,gui可以根据需要处理它。如果更改GUI,则网络代码不会更改。
答案 1 :(得分:1)
我第一次覆盖update()方法时遇到了这类问题。
Gnud是正确的,直接调用原始的update()
应该解决你的问题,如果你有事情要做/绘制/更新/绘制一个绘制事件,重新实现paintEvent(QPaintEvent*)
。
除此之外,为了触发您的绘画事件,您可以将插槽连接到readyRead()
QSocket信号。在此广告位中,您可以评估bytesAvailable()
,直到达到相当数量的数据。然后你打电话给update()
。您还应创建/重置一次性计时器,以防您刚刚收到的数据是最后一次,并且永远不会达到“体面”数量!