当我使用listview展示上百万条数据时,listview间距忽大忽小
找到原因了,是QT自己的一个BUG。QT调用OpenGL绘制时间距计算有问题。
这是因为 ListView 使用惰性加载的方式来加载数据,只有当 delegate 滑动到视图中才会加载。如果希望 ListView 中的 delegate 整齐排列,可以尝试使用以下方法来解决这个问题:
1、尽可能减少 delegate 的复杂度。在 delegate 中使用尽可能少的元素,并避免使用动画或其他复杂的布局。
2、尽可能增加 ListView 的 cacheBuffer 值。这会使 ListView 在加载 delegate 时缓存更多的 delegate,从而减少 delegate 加载的频率。
3、尽可能使用纯 C++ 实现 delegate。使用 C++ 实现 delegate 可以提高性能,并减少 delegate 加载时的卡顿。
4、尝试使用 Flickable 代替 ListView。Flickable 在加载 delegate 时更加流畅,但是它不具有 ListView 的一些功能,如自动滚动到底部和滚动到指定位置。