QtQuick:与OpenGL中一样的项目实例化

时间:2018-10-10 09:37:01

标签: qml qt5 qtquick2

在我们开发的应用程序中,我们希望创建项目的“克隆”,以便我们可以在UI的另一部分中显示它们,同时使它们的大部分内部状态保持同步。让我详细说明工作流程:

这些项目是“表格”,可能包含数千个子项目。 该表处于滚动视图中,以便用户可以滚动浏览(可能很大)的表。

这个想法是,用户可以临时显示一个“辅助视图”,该视图恰好是原始表的表示,但是具有一些不同的属性:

  • 滚动指示器可以与原始指示器不同,从而可以看到同一张桌子的两个不同位置
  • 选择可以不同,即使距离很远,也可以从表的一个位置拖放到另一位置。

这是用户在文本编辑器的2个视图中打开相同文件时所拥有的。

目前在我的头上,有两种解决方案:

1)创建一个包含所有子项目的第二张表,并使它们保持同步:这并不是明智的解决方案性能

2)创建第二个项目,该项目为空并包含原始表的帧缓冲区的“抓取”。必须使用QQuickItem :: childAt(x,y)之类的东西将事件转发到原始表,以恢复将事件发送到的原始项目。通过在获取帧缓冲区之前刷新选择状态,可以独立进行选择。 尽管此解决方案可能是更好的性能明智之举,但恐怕这都是非常棘手的事情。

有没有人尝试过实现这种实例化,哪种解决方案是最好的?

0 个答案:

没有答案