在我们开发的应用程序中,我们希望创建项目的“克隆”,以便我们可以在UI的另一部分中显示它们,同时使它们的大部分内部状态保持同步。让我详细说明工作流程:
这些项目是“表格”,可能包含数千个子项目。 该表处于滚动视图中,以便用户可以滚动浏览(可能很大)的表。
这个想法是,用户可以临时显示一个“辅助视图”,该视图恰好是原始表的表示,但是具有一些不同的属性:
这是用户在文本编辑器的2个视图中打开相同文件时所拥有的。
目前在我的头上,有两种解决方案:
1)创建一个包含所有子项目的第二张表,并使它们保持同步:这并不是明智的解决方案性能
2)创建第二个项目,该项目为空并包含原始表的帧缓冲区的“抓取”。必须使用QQuickItem :: childAt(x,y)之类的东西将事件转发到原始表,以恢复将事件发送到的原始项目。通过在获取帧缓冲区之前刷新选择状态,可以独立进行选择。 尽管此解决方案可能是更好的性能明智之举,但恐怕这都是非常棘手的事情。
有没有人尝试过实现这种实例化,哪种解决方案是最好的?