刷新Qt表单 - 似乎卡住了

时间:2013-04-17 14:06:38

标签: c++ qt

我的Qt表单有一个表格和一些标签。表格内容和标签内容变化如此之快,以至于有时似乎表单卡住了。但是,当我最小化表单并再次最大化时,会出现最新值。有关解决此问题的任何建议。

4 个答案:

答案 0 :(得分:4)

不要每秒更新用户界面数千次。您在显示屏上看到的图像通常每秒只更新60次。如果您有CRT显示器,刷新率可能类似于50 Hz - 120 Hz,但在大多数显示器中,刷新率为60 Hz。

除了显示器的刷新率之外,绝对不需要更频繁地更新标签内容。内容从未见过。但是更新用户界面小部件非常昂贵,因此预计窗口似乎被冻结。你正在做很多不必要的工作。

每次数据更改时都不要更新小部件。使用timer更新小部件。定时器间隔为16 ms意味着小部件每秒更新大约60次。但更新速度更慢可能就足够了。

答案 1 :(得分:1)

我的建议是在完成项目后使用repaint()

  

立即调用paintEvent()直接重绘小部件,   除非禁用更新或隐藏窗口小部件。

     

如果你需要立即重画,我们建议只使用repaint()   动画期间的例子。在几乎所有情况下,update()都是   更好,因为它允许Qt优化速度并最大限度地减少闪烁。

您可以将信号连接到该窗口小部件,而不是直接调用,因为repaint()是一个插槽。

答案 2 :(得分:0)

我的水晶球暗示您正在为QTableWidget使用自定义模型,但您的自定义模型未正确发出dataChanged信号。您的帖子中没有足够的数据 - 您使用的是哪种“表格”,以及如何向其提供数据?

答案 3 :(得分:0)

完全同意Roku的回答。无需以更快的速度更新用户界面,用户就可以阅读它。我怀疑每秒2-3次的事情对更新有任何意义..好吧,如果你使用智能代表,比如网格中的进度条或其他视觉事物,你可以每秒上升5-10次......但是仍然没有必要每秒1000次实现网格更新