Qt显示非统一层次结构

时间:2013-07-09 07:04:35

标签: c++ qt

以下是我想要显示的数据的逻辑层次结构。

root
|
+ node_name0 ---- collection<A> ---- collection<B>
|                 |                  |
|                 + item<A>[0]       + item<B>[0]
|                 |                  |
|                 + item<A>[1]       + item<B>[1]
|                 |
|                 + item<A>[2]
|
+ node_name1 ---- [...]
|
[...]

据我所知,Qt的表格视图将无法显示此数据而不会导致保真度大幅下降。它的列表也不会看到。如果我将层次结构重新整形为如下所示,Qt的树视图可以显示数据:

root
|
+ node_name
| |
| + collection<A>
| | |
| | + item<A>[0]
| | |
| | [...]
| |
| [...]
|
[...]

但是,在我看来,这避免了collection<A>的项目和collection<B>的项目具有完全不同的语义这一事实。

我已经有QAbstractItemModel的实现,它提供了ASCII艺术的第一部分中给出的数据安排。

如何显示此数据?

哪些Qt支持库可以提供让我的生活更轻松的视图?

收藏

  • 我不想在代理模型中使用多个视图的层次结构(但如果需要,我会咬紧牙关。)
  • 我不想为任何事情买单(因为我可以咬紧牙关并使用多个视图和代理模型)。
  • 如果给出的解决方案可以处理更深层次结构,即显示item<A>[*]item<B>[*]的子数据,那就太棒了。

1 个答案:

答案 0 :(得分:0)

不要尝试在一个视图中显示所有内容。如何为单独的集合使用单独的树视图(或tableviews)?或者树视图一次只显示一个集合,并且您有一些其他窗口小部件(组合框,列表视图,...),用于选择要查看的集合。

您应该考虑用户如何使用这些信息,用户是否真的需要查看所有现有信息,或者更小(更容易呈现)的子集就足够了。

我确定可以为该数据结构制作某种自定义视图窗口小部件。但是复杂的非标准小部件的问题是用户。用户不知道如何使用自定义小部件,大多数用户不喜欢这样。当然,用户将学习如何使用自定义小部件,如果他们使用足够长的时间。但是,如果您的程序仅偶尔使用,那么学习可能需要很长时间。这就是为什么使用标准小部件通常是更好的选择,即使自定义小部件在有经验的用户手中会更有效率。