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