Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QML:使用网格模拟GridView/ListView缓存缓冲区_Qt_Gridview_Qml - Fatal编程技术网

Qt QML:使用网格模拟GridView/ListView缓存缓冲区

Qt QML:使用网格模拟GridView/ListView缓存缓冲区,qt,gridview,qml,Qt,Gridview,Qml,我有一个非常复杂的QML视图,它基本上是一个GridView,但是没有使用默认的GridView,因为它不支持节 出于这个原因,我使用了Flickable+Grids和Repeater的组合来填充多个节头+一个卷轴下的网格 现在,由于cacheBuffer不可用,并且在最后一节中,视图+无限模型的视觉委托非常繁重(用户进一步滚动时会获取该委托),当您不断滚动时,我们的内存消耗会疯狂增加。我最好的猜测是,每个实例化的QML委托基本上永远保存在内存中 我正在寻找一种解决方案,您可以模拟GridVie

我有一个非常复杂的QML视图,它基本上是一个
GridView
,但是没有使用默认的
GridView
,因为它不支持节

出于这个原因,我使用了
Flickable
+
Grid
s和
Repeater
的组合来填充多个节头+一个卷轴下的网格

现在,由于
cacheBuffer
不可用,并且在最后一节中,视图+无限模型的视觉委托非常繁重(用户进一步滚动时会获取该委托),当您不断滚动时,我们的内存消耗会疯狂增加。我最好的猜测是,每个实例化的QML委托基本上永远保存在内存中

我正在寻找一种解决方案,您可以模拟
GridView
cacheBuffer
属性,将其应用于简单
Grid
并卸载远离可见滚动区域的代理

目前,我正在考虑使用
Loader
加载每个代理,并跟踪可见滚动区域中/附近的项目,以便他们的
Loader
可以加载/卸载其内容


如果您有任何建议,我们将不胜感激。

您解决了吗?我想看一张你所拥有的东西的简单地图done@MahdiKhalili我为每个委托使用了Loader,然后跟踪每个委托离当前查看位置的距离(contentX/contentY+width/height),并相应地加载/卸载委托(请参见Loader::source)。需要进行大量的微调才能很好地工作(用于将我的解决方案与WebRowser处理一些大型图片列表的方式(滚动的平滑度和RAM使用情况)进行比较),但我对结果非常满意。很抱歉,我无法共享我的代码,因为我在实现此功能时与一家公司签订了协议。