我有很多(分层)数据需要在TreeView中显示(包括子项,可能达到20K个或更多)。我的数据的特殊问题是,在TreeView中显示的每个对象都可以存在于许多TreeView项中。我的意思是,我可能会有像这样的层次结构:
1. Item_A -> Item_B -> ItemC 2. Item_B -> Item_C 3. ItemC
假设Item_A包含像上面显示的Item_B,Item_B包含Item_C。这意味着我的列表也将显示Item_B和Item_C的层次结构。现在考虑发生了某些事情,比如更改了作为Item_B显示的对象的名称。那么当然必须更新这两个项。现在考虑树形视图中有成千上万个带有复杂层次结构的项。你会使用什么策略来更新TreeView?速度当然是主要关注点,但易用性和维护性也很重要。目前,我保持内部映射列表项到对象以及反向映射,以快速查找和更新项目。这是正确的策略吗?通过在每次更新后重新创建列表,我可以丢弃大量代码,但我不知道哪些项目路径已展开或折叠。我该如何解决这个问题?我应该在内部容器中存储展开的路径吗?
谢谢。
PS:编程语言是C++,GUI库是QT3。
1. Item_A -> Item_B -> ItemC 2. Item_B -> Item_C 3. ItemC
假设Item_A包含像上面显示的Item_B,Item_B包含Item_C。这意味着我的列表也将显示Item_B和Item_C的层次结构。现在考虑发生了某些事情,比如更改了作为Item_B显示的对象的名称。那么当然必须更新这两个项。现在考虑树形视图中有成千上万个带有复杂层次结构的项。你会使用什么策略来更新TreeView?速度当然是主要关注点,但易用性和维护性也很重要。目前,我保持内部映射列表项到对象以及反向映射,以快速查找和更新项目。这是正确的策略吗?通过在每次更新后重新创建列表,我可以丢弃大量代码,但我不知道哪些项目路径已展开或折叠。我该如何解决这个问题?我应该在内部容器中存储展开的路径吗?
谢谢。
PS:编程语言是C++,GUI库是QT3。