2015-02-24 299 views
0

我正在写一个中央显示小部件,它包含许多小单元小部件,其中每个小部件都有一些QLabels来显示一些文本信息。Qt:太多setText调用导致滞后

我总共有100个QLabels。并且它们中的每一个都以2Hz左右的速度更新。 然后我的GUI线程变得非常滞后...

那里有什么可能的解决方案?

100个QLabels位于滚动区域btw。

+0

首先刷新只可见的QLabels。这些QLabel是否绑定到数据类?尝试阅读[本](http://stackoverflow.com/questions/21091229/how-to-data-bind-a-label-text-to-an-underlying-objects-property) – LPs 2015-02-24 09:46:44

回答

2

当您使用滚动区域时,我想,您一次不显示全部100个标签,对吧?你必须只更新那些可见的标签。出于这个原因,我建议使用Qt模型 - 视图 - 控制器(MVC)类,如QTableView等。这将确保只有可见项(单元)将被处理,性能方面这种方法将是非常有效的。

+0

通过使用MVC,它仍然使用我的自定义Widget?你认为,而不是QLabel的setText,重写其绘画事件,并做的事情会有所帮助? – Nyaruko 2015-02-24 10:32:37

+1

@Nyaruko,你想表达什么:文字,图像,两者? – vahancho 2015-02-24 10:56:27

+0

文字只有更好的主意? – Nyaruko 2015-02-24 11:13:50