在 Mint Linux 12 上使用 Qt4.8,我实现了一个包含QTableView
显示模型内容的简单窗口。模型数据不断更新(日志消息),并dataChanged()
定期发出信号(即每 100 毫秒)。
我看到的问题是桌子上的视觉更新口吃。
我在计算 -type 事件的窗口上安装了一个事件过滤器updateRequest
,它应该触发一个小部件重绘(也在子小部件上,即tableView
)。它们之间的平均时间约为 170 毫秒,标准偏差约为 90 毫秒(我猜这是相当大的)。然而,感知到的视觉更新率仅为每秒两到三倍,我想知道为什么。似乎并非所有updateRequest
事件都会触发小部件重绘或窗口系统会吞噬视觉更新。
作为第二个测试,我强制窗口通过调用repaint
或update
每 100 毫秒更新一次。使用repaint
,我看到 - 类型的事件相应增加,updateRequest
而差距的标准偏差减小;,update
数量没有增加。然而,在这两种情况下,感知更新率都只有适度的增加。
另外:有没有一种很好的方法来衡量一个小部件实际上真正重绘的频率而不必重载其paintEvent
处理程序?也许来自QTest
?
更新:我扩展了我的事件过滤器来捕获paintEvent
-type 事件。updateRequest
与 > 1000 个类型的事件相比,这些事件只有一位数。